r - 有没有更简单的方法来绘制相对频率直方图
问题描述
假设我有 1 的 30 次试验、2 的 40 次试验和 3 的 50 次试验。如果我使用以下代码:
library(lattice)
a <- c(30,40,50)
histogram(a)
然后结果的数量将显示为范围而不是频率。有没有比列出 3 50 次更方便的方法?
编辑:在一项实验中,研究人员正在计算手机跌落后会损坏多少次。第一次试用后有 30 部手机坏了,第二次试用后有 40 部手机坏了,第三次试用后有 50 部手机坏了。所以我想介绍一下这种趋势。但是,在我使用前面的代码之后,图表如下所示: graph Here R 将我的数据视为一个案例。因此,我正在寻找一些方法来使这些数据显示为案例频率。
解决方案
正如其他人在评论中所说的那样,我认为这barplot
是实现这一目标的最佳方法,但看起来您似乎也想知道一种“取消表”计数以创建直方图的方法。您可以使用以下方法执行此操作rep
:
a <- rep(1:3, c(30, 40, 50))
a
#> [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2
#> [35] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
#> [69] 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
#> [103] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
如果你真的想要,你可以用直方图绘制,像这样:
hist(a, breaks = 0:3 + .5, main = "frequency", xlab = "n", axes = FALSE)
axis(side = 2, at = 0:5 * 10)
axis(side = 1, at = 1:3)
但是,直方图并不是您真正想要的。直方图是一种通过将连续数据放入“箱”中来计算连续数据的方法,因此在直方图中,x 轴是连续的。以这种方式绘制它意味着有可能打破手机 1.6 次或 2.38 次。
如果要显示离散事件的计数,则应使用条形图。这具有适用于计数数据并且更容易创建的优点:
barplot(c(30,40,50), names.arg = 1:3, col = "lavender", main = "Broken phones")
推荐阅读
- javascript - Ionic Vue ion-textarea 没有将值传递给 v-model
- python - 如何在 python 中将 BeautifulSoup 对象作为单个字符串存储到数据框中
- vba - 选择文本框时,Word VBA PageSetup.LeftMargin 返回 9999999
- firebase - FirebaseError:Firebase:未创建 Firebase App '[DEFAULT]' - 启用 Web Flutter 时调用 Firebase App.initializeApp() (app/no-app)
- node.js - 将数据推送到嵌套的猫鼬数组时出错
- javascript - 如何在 React.js 中创建 HTML 文件
- android - Flutter Getx RxList 产品列表,名称-价格
- javascript - 有没有办法定义最大值和最小值(数字)?
- python - Telegram 的机器人可以运行 python 脚本吗?
- ros - 将包文件转换为常见的点云格式