我有一张桌子,我想用ggplot2制作一个情节,到目前为止我还没有成功.我准备了一个看起来像这样的简化表
df1<-data.frame(Loc=c(rep("L1",5),rep("L2",3),rep("L3",4)),
Type=c(rep("T1",3),rep("T2",2),"T1","T2","T2","T1","T1","T2","T2"),
y2009=rep("A",12),y2010=c("A","B","A","A","A","A","B","B","A","A","B","B"),
y2011=c("B","B","B","A","B",rep("B",4),"A","B","B"))
df1
Run Code Online (Sandbox Code Playgroud)
Loc有3个位置.每个位置有2种类型的样本T1或T2.他们从2009年开始作为A,随着时间的推移,有些人成为B.因此,到2011年,有很多B.
这是我到目前为止的数字
ggplot(df1,aes(x=Type)) + geom_bar()+facet_grid(~Loc)
ggplot(df1,aes(x=y2009,fill=Type)) + geom_bar(position="dodge")+facet_grid(~Loc)
Run Code Online (Sandbox Code Playgroud)
我不太确定如何从三个因素中得到计数.
我想要一个类似于下面的数字,我粗略地在油漆中起草.facet是位置,我只为Loc1制作了条形图.
Bro*_*ieG 17
尝试多层次的方面:
df2 <- melt(df1, id.vars=c("Loc", "Type"))
ggplot(data=df2, aes(x=value, fill=Type)) +
geom_bar() + facet_wrap(~ Loc + variable, nrow=1)
Run Code Online (Sandbox Code Playgroud)
或者,facet_grid
我觉得它看起来更好但与你的草图不太匹配:
df2 <- melt(df1, id.vars=c("Loc", "Type"))
ggplot(data=df2, aes(x=value, fill=Type)) +
geom_bar() + facet_grid(Loc ~ variable)
Run Code Online (Sandbox Code Playgroud)
最后,借用这篇文章,你可以尝试用颜色更好地区分位置(显然颜色方案可以使用一些工作,但你明白了):
df2 <- melt(df1, id.vars=c("Loc", "Type"))
ggplot(data=df2, aes(x=value, fill=Type)) +
geom_rect(aes(fill=Loc),xmin =-Inf,xmax=Inf,ymin=-Inf,ymax=Inf,alpha = 0.1) +
geom_bar() +
facet_wrap(~ Loc + variable, nrow=1)
Run Code Online (Sandbox Code Playgroud)
如果你想为每个位置实际拥有单独的面板,我认为你必须使用生成自己的网格视口和凹凸.有一个软件包ggextra
可以做这样的事情,但它似乎不适用于最新的R版本.
归档时间: |
|
查看次数: |
28767 次 |
最近记录: |