ggplot:在百分比图上添加频率图
Posted
技术标签:
【中文标题】ggplot:在百分比图上添加频率图【英文标题】:ggplot: adding a frequency plot over a percentage plot 【发布时间】:2022-01-09 05:43:21 【问题描述】:我有兴趣按组显示百分比。 像这样:
data(iris)
ggplot(iris,
aes(x = Sepal.Length, group = factor(Species), fill = factor(Species))) +
geom_histogram(position = "fill")+theme_bw()
但是,我还想在此图的顶部绘制一个显示频率分布的直方图。 类似于下面的情节。
ggplot(iris,aes(x = Sepal.Length)) +
geom_histogram()+theme_bw()
有人知道怎么做吗?
注意我知道如何按组绘制频率图:ggplot(iris,aes(x = Sepal.Length, group = factor(Species), fill = factor(Species))) + geom_histogram()+theme_bw()
。但这不是我想要的。相反,我希望在开头显示的百分比图底部有一个小的频率分布。
非常感谢
【问题讨论】:
您想要将两个图表叠加在一个绘图中,还是想要两个单独的图表堆叠在一起?在最后一种情况下,您可以例如看看patchwork
。
【参考方案1】:
这样的?
library(gridExtra)
p1 <- ggplot(iris,
aes(x = Sepal.Length,
group = factor(Species),
fill = factor(Species))) +
geom_histogram(position = "fill") +
theme_bw() +
theme(legend.position = "top")
p2 <- ggplot(iris,aes(x = Sepal.Length,
group = factor(Species),
fill = factor(Species))) +
geom_histogram() +
theme_bw() +
theme(legend.position = "none")
grid.arrange(p1, p2,
heights = c(4, 1.5))
编辑:那么您正在寻找这个吗?请注意,在这种情况下,较小直方图的绝对值变得毫无意义,因为它们被缩小到垂直图表范围的约 25%。
ggplot() +
geom_histogram(data = iris,
aes(x = Sepal.Length,
group = factor(Species),
fill = factor(Species)),
position = "fill",
alpha = 1) +
geom_histogram(data = iris,
aes(x = Sepal.Length,
y = ..ncount.. / 4),
alpha = 0.5,
fill = 'black')
【讨论】:
谢谢,这是有道理的,但我试图找到一种方法让这两个图重叠,也许在频率图中有一些透明度。以上是关于ggplot:在百分比图上添加频率图的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例(对计算获得的百分比进行近似,值保留整数部分)使用ggplot2可视化条形图(bar plot)并在条形图上添加百分比标签
R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例使用ggplot2可视化条形图(bar plot)并在条形图上添加百分比标签
R语言ggplot2可视化在分面图(facet_grid)的条形图上添加计数(count)或者百分比(percent)标签实战
R语言ggplot2可视化:ggplot2可视化水平堆叠条形图并且在每个堆叠条形图的内部居中添加百分比文本标签信息
如何将每个类别的百分比添加到堆积条形图(ggplot2)(对于“非百分比”堆积图表)
R语言ggplot2可视化百分比显示实战:纵轴显示为百分比在柱状图上显示百分比按照因子变量绘制分组子图(纵轴显示为百分比)可视化图中显示数据百分比