我想绘制水平小提琴图(因为我的标签很长).我的设计限制是:
f1),每个facet(f2)的多个类别(所以我想使用aes(x=f2)和facet_wrap(~f1)scales="free")facet_wrap()(排除一些切面技巧)不幸的是scales="free",coord_flip()目前(并且在可预见的未来)不兼容.
这个相关问题的答案表明(1)黑客攻击一个新的水平地貌; (2)交换x和y(正如所指出的那样,它只适用于散点图等对称的geoms); (3)放弃和继续传统的布局.
想法?
set.seed(101)
library("plyr")
dd <- expand.grid(f1=factor(1:2),
f2=paste("inconveniently long label",1:2))
dd2 <- ddply(dd,c("f1","f2"),
function(x)
data.frame(y=rnorm(100,
mean=10*(as.numeric(x$f2)),
sd=10^(as.numeric(x$f1)))))
library("ggplot2")
Run Code Online (Sandbox Code Playgroud)
我的选择似乎是(1)带有scale="free"不方便的(横向)标签:
ggplot(dd2,aes(x=f2,y=y))+facet_wrap(~f1,scale="free")+geom_violin()
Run Code Online (Sandbox Code Playgroud)
(2)有coord_flip(),不方便的尺度
ggplot(dd2,aes(x=f2,y=y))+facet_wrap(~f1)+geom_violin()+coord_flip()
Run Code Online (Sandbox Code Playgroud)
尝试两个(ggplot(dd2,aes(x=f2,y=y))+facet_wrap(~f1,scale="free")+geom_violin()+coord_flip())给出
ggplot2目前不支持使用非笛卡尔坐标或coord_flip的自由音阶.
其他想法:
geom_errorbarh)有明确的水平版本; 我可以自己破解geom_violinh......geom_ribbon()来破解小提琴情节,但是它使用了分面,使其与facet_wrap()对于它的价值,这就是我的真实情节(目前):
这现在可以通过新的(2016 年 1 月)ggstance 包来完成,它提供了各种几何体的水平版本。
## if necessary
devtools::install_github("lionel-/ggstance")
## ... data generation stuff from above
require("ggplot2")
require("ggstance")
ggplot(dd2,aes(y=f2,x=y))+facet_wrap(~f1,scale="free")+
geom_violinh()
Run Code Online (Sandbox Code Playgroud)
不确定这是否有帮助,但这是我们“破解”垂直小提琴的答案的改编。
dd2_violin <- ddply(dd2,.(f1,f2),function(chunk){
d_y <- density(chunk$y)
top_part <- data.frame(x=d_y$x, y=d_y$y)
bottom_part <- top_part[nrow(top_part):1,]
bottom_part$y <- 0 - bottom_part$y
return(rbind(top_part,bottom_part))
})
#weird trick to get spacing right
dd2_violin$y2 <- as.numeric(dd2_violin$f2)*(2*max(dd2_violin$y))+dd2_violin$y
p1 <- ggplot(dd2_violin, aes(x=x,y=y2,group=interaction(f1,f2))) + geom_path()
#apply same weird trick to get labels
p1 + facet_grid(~f1,scales="free")+labs(x="y")+
scale_y_continuous(breaks=unique(as.numeric(dd2_violin$f2)*(2*max(dd2_violin$y))),labels=unique(dd2_violin$f2))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1758 次 |
| 最近记录: |