gpt4 book ai didi

r - 将箱线图转换为 R 中 ggplot2 中的密度

转载 作者:行者123 更新时间:2023-12-04 10:10:37 27 4
gpt4 key购买 nike

我有以下 ggplot2 图:

ggplot(iris) + geom_boxplot(aes(x=Species, y=Petal.Length, fill=Species)) + coord_flip()

我想将其绘制为水平密度图或直方图,这意味着每个物种都有密度线图或直方图而不是箱线图。这并不能解决问题:

> ggplot(iris) + geom_density(aes(x=Species, y=Petal.Length, fill=Species)) + coord_flip()
Error in eval(expr, envir, enclos) : object 'y' not found

为简单起见,我使用 Species 作为 x 变量和 fill 但在我的实际数据中,X 轴表示一组条件填充代表另一个。尽管这对于绘图目的无关紧要。我正在努力使 X 轴代表不同的条件,在这些条件下,值 y 被绘制为密度/直方图而不是箱线图。

编辑 这可以用具有两个类因子变量(如物种)的变量来更好地说明。在 mpg 数据集中,我想为每个制造商绘制密度图,为每个 cyl 值绘制 displ 的分布。 x 轴(在翻转坐标中是垂直的)代表每个制造商,直方图的值是 displ,但对于每个制造商,我想要的直方图与 cyl 一样多> 该制造商的值。希望这更清楚。我知道这不起作用,因为 y= 需要计数。

ggplot(mpg, aes(x=manufacturer, fill=cyl, y=displ)) + 
geom_density(position="identity") + coord_flip()

我得到的最接近的是:

> ggplot(mpg, aes(x=displ, fill=cyl)) + 
+ geom_density(position="identity") + facet_grid(manufacturer ~ .)

但我不想要不同的网格,我希望它们是同一个图中的不同条目,就像直方图的情况一样。

最佳答案

是这样的吗?对于两者 histogramdensity地 block ,y变量是 count .所以,你必须绘制 x = Petal.Length其频率(对于给定的 binwidth)将绘制在 y 轴上。只需使用 fill=Species连同 x=Petal.Length通过 Species 给颜色.

对于 histogram :

ggplot(iris, aes(x=Petal.Length, fill=Species)) + 
geom_histogram(position="identity") + coord_flip()

对于 density :

ggplot(iris, aes(x=Petal.Length, fill=Species)) + 
geom_density(position="identity") + coord_flip()

编辑:也许您正在寻找 facetting ??

ggplot(mpg, aes(x=displ, fill=factor(cyl))) +  
geom_density(position="identity") +
facet_wrap( ~ manufacturer, ncol=3)

给予:

enter image description here

编辑: 因为,你不想要 facetting ,我能想到的唯一其他方法是通过粘贴 manufacturer 创建一个单独的组和 cyl一起:

dd <- mpg
dd$grp <- factor(paste(dd$manufacturer, dd$cyl))

ggplot(dd, aes(x=displ)) +
geom_density(aes(fill=grp), position="identity")

给出:

enter image description here

关于r - 将箱线图转换为 R 中 ggplot2 中的密度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15273951/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com