R直方图使用百分比而不是粗略值添加标签

R直方图使用百分比而不是粗略值添加标签,r,histogram,R,Histogram,我想用hist来制作一个使用百分比的直方图 但是,我还想在每个直方图条的顶部放置一个标签,显示实际百分比 以下是我的代码和输出链接: DataToPlot <- sapply(dataframe, as.numeric) hist(DataToPlot, xlab="dataframe",ylab="Calls", main="Weekly data", col="lightgreen",labels = TRUE, ylim=c(0, 12000)) 使用freq=TRUE选项: 使

我想用hist来制作一个使用百分比的直方图

但是,我还想在每个直方图条的顶部放置一个标签,显示实际百分比

以下是我的代码和输出链接:

DataToPlot <- sapply(dataframe, as.numeric)

hist(DataToPlot, xlab="dataframe",ylab="Calls", main="Weekly data", col="lightgreen",labels = TRUE, ylim=c(0, 12000))
使用freq=TRUE选项:

使用freq=TRUE选项:

添加此行值是您希望用作标签的列:

labs <- paste(round(DataToPlot$value), "%", sep="")
添加此行值是您希望用作标签的列:

labs <- paste(round(DataToPlot$value), "%", sep="")
您需要的是freq=FALSE选项@jkd搞错了。 注意,医生说

freq:逻辑;如果为TRUE,则直方图图形表示频率、结果的计数分量;如果为假,则绘制概率密度、成分密度,以便直方图的总面积为1。当且仅当断裂等距且未指定概率时,默认为TRUE

如果您只想使用基本图形,那么只需使用hist函数就可以了。您可以像这样手动添加百分比值

data(iris)

# store the histogram in 'h'
h <- hist(iris$Sepal.Length, xlab="dataframe", ylab="Calls", freq = FALSE, 
          main="Weekly data", col="lightgreen", labels = FALSE, ylim = c(0,0.5))


text(
     x = (h$breaks[-1] + h$breaks[-length(h$breaks)])/2, # compute break center
     y = h$density, # use density as y value
     labels = paste(round((h$density/sum(h$density))*100, 2), "%"), # labels are (density/sum(density)) *100 for %
     pos = 3) # pos = 3 means above the specified coordinates
这就产生了

请注意,我使用的数据来自iris数据集,因为您没有给出任何

您想要的是freq=FALSE选项@jkd搞错了。 注意,医生说

freq:逻辑;如果为TRUE,则直方图图形表示频率、结果的计数分量;如果为假,则绘制概率密度、成分密度,以便直方图的总面积为1。当且仅当断裂等距且未指定概率时,默认为TRUE

如果您只想使用基本图形,那么只需使用hist函数就可以了。您可以像这样手动添加百分比值

data(iris)

# store the histogram in 'h'
h <- hist(iris$Sepal.Length, xlab="dataframe", ylab="Calls", freq = FALSE, 
          main="Weekly data", col="lightgreen", labels = FALSE, ylim = c(0,0.5))


text(
     x = (h$breaks[-1] + h$breaks[-length(h$breaks)])/2, # compute break center
     y = h$density, # use density as y value
     labels = paste(round((h$density/sum(h$density))*100, 2), "%"), # labels are (density/sum(density)) *100 for %
     pos = 3) # pos = 3 means above the specified coordinates
这就产生了


请注意,我使用的数据来自iris数据集,因为您没有给出任何

好吧,我得到了完全相同的输出好吧,我得到了完全相同的输出得到了一个错误:DataToPlot$value中的错误:$operator对于原子向量无效got错误:DataToPlot$value中的错误:$operator对于原子向量无效没有问题。请注意,百分比值不是密度值乘以100。没问题。请注意,百分比值不是密度值乘以100。