我想在同一个条形图中绘制两个数据系列(相同类型和数量的度量,但在两个时间点测量)。优选地,第一系列以灰色绘制,第二系列以具有透明度的颜色绘制,使得系列1数据仍然可见。 我的数据格式如下:
MyData = data.frame(
method=rep(c("A","B","C","D","E"),times=3),
time1=rnorm(30,10,3),
time2=rnorm(30,8,2),
lab=rep(rep(c(1,2,3),each=5),times=2),
cat=rep(c(1,2),each=15)
)
为了显示我正在寻找的情节类型,我已经添加了用于绘制下面数据系列1的代码:
p <- ggplot(data = MyData,
aes(x=lab,
y=time1,
fill=method))
p + geom_bar(stat="identity",
position="dodge",
alpha=.3) +
facet_grid(. ~ cat)
最后,哪一个数据系列是灰色的,哪个是彩色的,只要它们相互重叠,并且两者都可见,这并不重要。
欢迎所有建议!
答案 0 :(得分:1)
只能有一个有效fill_scale
,因此我们需要将变量方法映射到其他内容,group
或color
。
library(ggplot2)
MyData = data.frame(
method=rep(c("A","B","C","D","E"),times=3),
time1=rnorm(30,10,3),
time2=rnorm(30,8,2),
lab=rep(rep(c(1,2,3),each=5),times=2),
cat=rep(c(1,2),each=15)
)
p <- ggplot(data = MyData,
aes(x=lab)) +
geom_bar(aes(y=time2,fill=method),
stat="identity",
position="dodge",
alpha=.3
) +
geom_bar(aes(y=time1,group=method),
stat="identity",
position="dodge",
alpha=.3) +
scale_fill_discrete() +
facet_grid(. ~ cat)
p
答案 1 :(得分:0)
我一直在考虑添加第二个数据系列的另一种方法。我可以使用geom_point
而不是geom_bar
添加第二个系列,因为这样可以减少混乱。但是,如何在相应的条上定位点? (即现在这些点都在相同的x轴位置上)。
library(ggplot2)
MyData = data.frame(
method=rep(c("A","B","C","D","E"),times=3),
time1=rnorm(30,10,3),
time2=rnorm(30,8,2),
lab=rep(rep(c(1,2,3),each=5),times=2),
cat=rep(c(1,2),each=15)
)
p <- ggplot(data = MyData,
aes(x=lab)) +
geom_bar(aes(y=time1,fill=method),
stat="identity",
position="dodge",
alpha=.7
) +
geom_point(aes(y=time2,group=method),
stat="identity",
position="dodge",
alpha=.8,
size=3) +
scale_fill_brewer(palette=3) +
facet_grid(. ~ cat)
p