r - 将频率为零的类别强制到条形图
问题描述
我有一个观察向量,我希望在 R 中绘制一个条形图。
该向量包含从 0 到 9 的离散值。没有观察到 6,但是当我绘制它时,我希望 6 出现在 x 轴上,上面没有条形。我在任何地方都找不到在线指导如何做到这一点。
到目前为止,我的代码是:
sick = c(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5,5,7,7,7,7,7,8,8,9)
ft = data.frame(table(sick))
colnames(ft) = c('Value','Freq')
ft$Perc = round(ft$Freq / sum(ft$Freq) * 100,1)
counts = table(sick)
bp = barplot(counts, main="Sick Leave Distribution", ylab = "Frequency", xlab = "Days of Sick Leave Taken" , ylim = c(0,10), cex.names = 1, col = "blue", names.arg=gsub("\\s","\n", unique(sick)))
text(x=bp, y=counts, labels=round(counts,0), pos=3, xpd=NA)
代码工作正常,但我希望将 6 的值添加到 x 轴。如何在 R 中完成?
解决方案
为表函数提供一个因子可以解决此问题。而且你还需要调整name.arg
。
sick = c(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5,5,7,7,7,7,7,8,8,9)
ft = data.frame(table(sick))
colnames(ft) = c('Value','Freq')
ft$Perc = round(ft$Freq / sum(ft$Freq) * 100,1)
counts = table(factor(sick,levels = c(0:9)))
bp = barplot(counts, main="Sick Leave Distribution", ylab = "Frequency", xlab = "Days of Sick Leave Taken" , ylim = c(0,10), cex.names = 1, col = "blue", names.arg=gsub("\\s","\n", c(0:9)))
text(x=bp, y=counts, labels=round(counts,0), pos=3, xpd=NA)
推荐阅读
- r - stargazer 中多个多项式模型的变量名称
- python - 分析预测调用 Tensorboard
- javascript - 为什么我在 Jest 测试中收到错误 Unexpected keyword 'new'?
- c# - 在 Intent Architect 模板中,如何检查属性的类型是否为枚举顺序以生成适当的代码?
- python - 在 python 中,如何比较两个数字字符串而不将它们转换为 int()?
- c++ - CMakeLists - 如何包含源文件和头文件的目录?
- javascript - 为什么这里的箭头函数/方法的“this”===窗口?
- javascript - 在使用 then 或 await 时,在 express 路由中获取 API 数据返回未定义
- r - 清理二进制数据帧
- python - 我想从熊猫数据框中修剪空间和字符串