【问题标题】:Optimal visualisation of ggplot colours: changing order of colours, keeping original factor orderingggplot颜色的最佳可视化:改变颜色顺序,保持原始因子排序
【发布时间】:2014-08-24 06:16:48
【问题描述】:

我喜欢默认的 ggplot2 颜色,但是对于我使用的数据集,读者能够分辨出两个相邻类别之间的区别非常重要。默认颜色很难做到这一点,因为我有 10 个类别,因此相邻因子组之间生成的颜色非常相似。

这是一个例子:

library(ggplot2)
x=rnorm(100,1,2)
y=rnorm(100,1,2)
category=letters[1:10]
data=cbind.data.frame(x,y,category)
ggplot(data,aes(x,y,colour=category))+stat_smooth(alpha=0)

给出这样的东西:

例如,在这张图上很难确定哪个是 d 和哪个是 e,因为它们都是绿色的,区分我的数据的相邻因子组很重要。现有的顺序也很重要,我希望它在图例中按顺序出现。

所以我的问题是;有没有办法保持可爱的默认 ggplot2 颜色(跨越 10 个因子级别),但是稍微混合一下顺序,以便相邻的类别看起来更容易区分?在我的数据集中,不相邻的类别通常可以通过它们的实际分布来确定,因此颜色对这些类别不太重要。

我弄乱了不同的scale_colour_brewer() 调色板,但颜色没有那么漂亮。

【问题讨论】:

  • 如何交替使用线条样式,这样相邻的组将始终是一条实线和一条虚线?

标签: r colors ggplot2


【解决方案1】:

要打乱颜色的顺序,您可以使用

require(scales)
n <- length(levels(data$category)) # number of colors
cols <- hue_pal(h = c(0, 360) + 15, 
                c = 100, l = 65, 
                h.start = 0, direction = 1)(n)[order(sample(1:n, n))] # color palette in random order
ggplot(data,aes(x,y,colour=category))+stat_smooth(alpha=0, size=2) + 
  scale_color_manual(values = cols) 

如果您想要可区分的颜色,请查看this post

【讨论】:

  • 谢谢,我最终这样做了,但我没有随机分配 10 种颜色,而是像这样交替它们:cols &lt;- hue_pal(h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, direction = 1)(n)[c(1, 3, 5, 7, 9, 2, 4, 6, 8, 10)]
【解决方案2】:
library(ggplot2)
library(scales)

set.seed(42)
x <- rnorm(100,1,2)
y <- rnorm(100,1,2)
category <- letters[1:10]
data <- cbind.data.frame(x,y,category)
cols <- sample(hue_pal()(10))
ggplot(data,aes(x,y,colour=category)) + stat_smooth(alpha=0) + scale_colour_manual(values=cols)

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 2015-05-11
    相关资源
    最近更新 更多