很抱歉提出一个非常简单的问题,我是R的新手,我正尝试根据一组数据制作直方图,如图所示。但是,当我尝试制作直方图时,它会显示出来。我的问题是,是否可以将x轴标签更改为我的数据集中的范围?并可以根据范围进行直方图绘制吗?
非常感谢您的帮助。
答案 0 :(得分:1)
您的向量age
本质上是因子向量。
因此,您可以尝试对因子的每个水平进行计数并将其绘制为直方图,而不必尝试绘制其密度。
为此,您可以使用dplyr
和ggplot2
:
library(dplyr)
data.frame(age) %>% group_by(age) %>% count(age)
# A tibble: 3 x 2
# Groups: age [3]
age n
<fct> <int>
1 19-25 9
2 26-32 15
3 33-39 4
现在,如果您将此输出合并到ggplot2
,则可以获得:
library(dplyr)
library(ggplot2)
data.frame(age) %>% group_by(age) %>% count(age) %>%
ggplot(aes(x = age, y = n)) + geom_bar(stat = "identity")
使用基数R
根据@RoB的良好建议,您可能会很感兴趣,知道如何使用R base
绘图来做到这一点。
所以您可以这样实现:
library(dplyr)
df <- data.frame(age) %>% group_by(age) %>% count(age)
barplot(df$n)
axis(side = 1, at = 1:3, labels = df$age)
编辑:基础图形的替代方案
实际上,通过执行以下操作,您甚至可以更快地绘制因子age
的各个级别的直方图,而无需使用axis
函数或dplyr
包:
barplot(table(age))
它回答了您的问题吗?
数据
age = c("19-25","19-25","26-32","26-32","26-32","26-32","26-32","26-32","26-32",
"33-39","19-25","19-25","26-32","19-25","19-25","26-32","19-25","26-32",
"26-32","19-25","26-32","33-39","26-32","19-25","26-32","33-39","33-39","26-32")