Cec*_*Mag 2 r ggplot2 ggridges
我在 R 中创建绘图时遇到麻烦。如果我有类似的数据
我想创建:
x 轴为萼片长度、萼片宽度、花瓣宽度、花瓣长度,y 轴为不同物种,高度为值。并根据 y 轴用不同的颜色填充每个条形图。
谢谢你!
到目前为止,我已经尝试过:
iris_mean <- aggregate(iris[,1:4], by=list(Species=iris$Species), FUN=mean)
library(reshape2)
df_mean <- melt(iris_mean, id.vars=c("Species"), variable.name = "Samples",
value.name="Values")
ggplot(df_mean,aes(Samples,Values))+
geom_bar(aes(fill=Species),stat="identity")+
facet_grid(Species~.,scale='free',space='free')+theme(panel.margin = unit(0.1, "lines"))
ggplot(df_mean,aes(x=Samples,y=Species,height =Values))+
geom_density_ridges2(aes(fill=Species),stat='identity',
scale=1.5,
alpha=0.1,
lty = 1.1)
Run Code Online (Sandbox Code Playgroud)
你的多面情节走在正确的轨道上。正如我在评论中所说,您试图显示值的分布,而不是值的平均值。您可以手动设置分隔符并计算要在 a 中显示的计数geom_bar,但这很容易变得非常复杂,特别是因为不同类型的度量具有不同的比例。我建议只使用简单的直方图。我使用gather而不是melt制作长数据\xe2\x80\x94,这只是偏好。
除了您所拥有的之外,问题还在于 1. 使用发行版,2. 巧妙地利用主题。如果移动小面标签,旋转左侧条带,取出条带背景,并删除面板之间的垂直间距,您基本上就得到了山脊图。我不太熟悉ggridges,但我猜它会做类似的事情。从这里,您可以调整您认为合适的方式。
library(tidyverse)\n\niris_long <- as_tibble(iris) %>%\n gather(key = measure, value = value, -Species)\n\nggplot(iris_long, aes(x = value, fill = Species)) +\n # geom_density_ridges() +\n geom_histogram(show.legend = F) +\n scale_y_continuous(breaks = NULL) +\n labs(x = "Measure", y = "Species") +\n facet_grid(Species ~ measure, scales = "free", switch = "both") +\n theme(strip.background = element_blank(), strip.text.y = element_text(angle = 180), \n strip.placement = "outside", panel.spacing.y = unit(0, "cm"))\n#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.\nRun Code Online (Sandbox Code Playgroud)\n\n
由reprex 包(v0.2.0) 于 2018-07-19 创建。
\n| 归档时间: |
|
| 查看次数: |
1577 次 |
| 最近记录: |