【问题标题】:Create standard color scale for several graphs为多个图形创建标准色标
【发布时间】:2018-10-16 04:14:40
【问题描述】:

我正在尝试为多个图表创建自定义色标。我希望它是一个标准的配色方案,以便可以比较两个图表。第一张图的数据范围要小得多(其最大值略高于 3),而另一张图的数据范围为 9。因此,我需要颜色来匹配数字 4-9,但不希望它们出现在第一个图形。但是,他们总是这样做,我不明白为什么。

这是第一张图的数据:

df <- data.frame(
  x = runif(100),
  y = runif(100),
  z1 = rnorm(100),
  z2 = abs(rnorm(100))
)

这是带有自定义色标的图表。但是,您可以看到所有颜色都出现在图表中,尽管应该只显示前 5 种颜色。

ggplot(df, aes(x, y)) +
  geom_point(aes(colour = z2))+scale_colour_gradientn(colours = c('springgreen1', 'springgreen4', 'yellowgreen','yellow2','lightsalmon','orange','orange3','orange4','navajowhite3','white'),breaks=c(0,1,2,3,4,5,6,7,8,9))

【问题讨论】:

标签: r ggplot2


【解决方案1】:

scale_colour_gradientnlimits 术语在这里可以提供帮助:

ggplot(df, aes(x, y)) +
  geom_point(aes(colour = z2))+
  scale_colour_gradientn(colours = c('springgreen1', 'springgreen4', 'yellowgreen','yellow2',
                                     'lightsalmon','orange','orange3','orange4','navajowhite3','white'),
                         breaks=c(0,1,2,3,4,5,6,7,8,9), 
                         limits = c(0,9)) +
theme(legend.key.height = unit(1.5, "cm"))

【讨论】:

  • 谢谢!这很好用。但是,在我的真实数据中,我有很多中断,因此颜色条上的标签现在重叠(即条太短)。你知道如何让颜色条变长,以便与每种颜色相关的每个数字之间有更多的空间吗?
  • 您可以使用theme(legend.... 更改图例大小,如更新后的答案所示。
猜你喜欢
  • 1970-01-01
  • 2018-11-16
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 2011-12-14
相关资源
最近更新 更多