R ggplot在同一个图上有两个调色板

时间:2017-08-28 10:44:39

标签: r ggplot2

我想在同一个地块上使用两个调色板。 我有两组不同的模态,我的目标是每组都有自己的调色板

我没有设法用scale_colour_brewer

来做到这一点

任何人都可以帮助我。

欢呼声

我的主题实际上很广泛。 我要说明一下。

我可以总结我的数据如下:

| side | factor  | Time | value |
|------|---------|------|-------|
| Left | methodA | 0    | 5     |
| Left | methodA | 1    | 3     |
| Left | methodA | 2    | 2     |
| Right| methodA | 2    | 2     |
| Right| methodA | 2    | 2     |
| Right| methodA | 2    | 2     |
| Left | methodB | 0    | 5     |
| Left | methodB | 1    | 3     |
| Left | methodB | 2    | 2     |
| Right| methodB | 2    | 2     |
| Right| methodB | 2    | 2     |
| Right| methodB | 2    | 2     |

我想绘制一系列价值与时间的关系 - 使用Side == Left的红色调色板和红色变化代表的因子 - 使用Side == Right的蓝色调色板和蓝色变化所代表的因子

欢呼声

1 个答案:

答案 0 :(得分:1)

注意:当每组中的因子数相当小时,以下建议的方法是可行的。如果有许多不同的组因子组合,您的观众可能无法区分颜色的微小变化,在这种情况下,按组进行分组可以使更清晰的组合更加清晰。清洁图片。

(对于任何演示,我自己的工作假设是假设投影仪已经使用了10年,打印机耗尽了墨水,并且至少有一半的目标观众已经过期了新的处方镜片。 。)

# sample data
set.seed(10)
df <- data.frame(side = c(rep("Left", 3), rep("Right", 3), rep("Left", 3), rep("Right", 3)),
                 factor = c(rep("A", 6), rep("B", 6)),
                 time = rep(seq(1, 3), 4),
                 value = sample(seq(1, 10), 12, replace = T))

方法1 :按组&amp;而不是colour。按因子

改变alpha
ggplot(df,
       aes(x = time, y = value, colour = side, alpha = factor)) +
  geom_line(size = 3) +
  scale_alpha_discrete(name = "Factor", range = c(0.5, 1)) +
  scale_color_manual(name = "Side", values = c("#1f78b4", "#33a02c")) +
  theme_classic()

Approach 1

当线条不重叠太多时,这种效果最佳,因为重叠区域看起来更暗。

方法2 :(仅限2个因素)创建组合变量&amp;使用&#34;配对&#34;调色板

ggplot(df %>% 
         mutate(combined.variable = factor(paste(side, factor, sep = "~"))),
       aes(x = time, y = value, colour = combined.variable)) +
  geom_line(size = 3) +
  scale_color_brewer(name = "Side~Factor", palette = "Paired") +
  theme_classic()

Approach 2

RColorBrewer软件包&#34;已配对&#34;调色板有12种颜色(大约)6对。如果你有&lt; = 6组&amp;每组中有2个因素,这可能是分配颜色的简单方法。这是一个色轮供参考:

colour wheel