1

我想在同一个条形图中绘制两个数据系列(相同类型和数量的度量,但在两个时间点测量)。优选地,第一系列以灰色绘制,而第二系列以具有透明度的颜色绘制,使得系列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)

最后,哪个数据系列是灰色的,哪个是彩色的并不重要,只要它们被绘制在彼此的顶部,并且两者都是可见的。

欢迎所有建议!

4

2 回答 2

2

只有一个 active 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

在此处输入图像描述

于 2015-07-09T09:15:46.823 回答
2

我一直在考虑添加第二个数据系列的不同方法。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
于 2015-07-09T10:09:41.210 回答