我有以下 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
绘制为密度/直方图而不是箱线图。
编辑这可以用一个具有两个类似因子的变量(如 Species)的变量来更好地说明。在mpg
数据集中,我想为每个制造商制作一个密度图,绘制displ
每个cyl
值的分布。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 ~ .)
但我不想要不同的网格,我希望它们在同一个图中是不同的条目,就像在直方图的情况下一样。