如何在 R 中绘制 X 轴和 Y 轴的基本直方图

How to draw a basic histogram with X and Y axis in R

我想制作一个包含两个向量的简单直方图,

values <- c(1,2,3,4,5,6,7,8)
freq <- c(4,6,4,4,3,2,1,1)
df <- data.frame(values,freq)

现在 data.farame df 包含以下值:

values freq
 1    4
 2    6
 3    4
 4    4
 5    3
 6    2
 7    1
 8    1

现在我想画一个简单的直方图,其中value在x轴上,freq在y轴上。我正在尝试使用 hist 函数,但我无法提供两个变量。如何根据这些数据制作简单的直方图?

使用 ggplot2:

library(ggplot2)
ggplot(df, aes(x = values, y = freq)) +
       geom_bar(stat="identity")

既然你已经有了频率,你真正想要的是条形图:

barplot(df$freq,names.arg=df$values)

如果您下定决心要使用 hist,您应该这样做:

hist(rep(df$values,df$freq))

请阅读 ?barplot?hist 以了解更多绘图选项。


此外,因为我有点狂热,我认为如果您使用 data.table:

,代码看起来会更清晰
library(data.table)
setDT(df) #convert df to a data.table by reference
df[,barplot(freq,names.arg=values)]

df[,hist(rep(values,freq))]