【问题标题】:increasing contrast of ggplot2 scale_colour_gradient in R?增加R中ggplot2 scale_colour_gradient的对比度?
【发布时间】:2013-07-06 19:27:17
【问题描述】:

我使用 scale_colour_gradient/scale_colour_gradient2 来制作散点图中点的颜色渐变。渐变设置为从红色到深红色,或从黑色到红色,如:

ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, colour=Sepal.Length)) + scale_colour_gradient(low="red", high="darkred")

我经常将scale_colour_gradient 设置为对数刻度,因为它代表比率。我的问题是如何增加刻度点之间的对比度?例如。使它成为规模不同部分之间的差异?在我的情况下,比例总是连续的(实数)。任何有关这方面的观点都会有所帮助。

【问题讨论】:

    标签: r colors plot ggplot2


    【解决方案1】:

    似乎黑色到红色或红色到深红色给您的色彩空间非常小。您可以使用十六进制代码为低和高设置分配更具体的颜色,并添加黑色背景以提高对比度。例如:

    + scale_colour_gradient2(low="#22FF00", mid="white", high="#FF0000", midpoint=median(iris$Sepal.Length)) + theme(panel.grid=element_blank(), panel.background=element_rect(fill="black"))
    

    给你更多的对比。请注意,我使用的是scale_color_gradient2,它允许您设置中点颜色并将其归因于数据的汇总统计(这里,我使用了中位数)。我还在光谱的相对两端使用了两种颜色。将以上内容添加到您的代码中会产生:

    但是除了玩弄特定颜色直到你满意(http://www.rapidtables.com/web/color/RGB_Color.htmiwanthue 是挑选颜色的好资源),我不知道是否有办法设置渐变以便对比度在整个中被最大化,而不会产生一些非常复杂的彩虹色。您可能知道,数据中任何两个给定点之间的对比度与这些点的值之间的差异成正比,因此在渐变的不同区域设置中改变这种关系可能是不可取的,据我所知是不可能的在ggplot2中。

    编辑:另一种提高对比度的方法是按所需变量(在本例中为 Sepal.Length)的等级顺序而不是变量本身来着色。这将创建一个均匀分布,通过在分位数之间给出相等的距离来“展开”您的数据。但是,这可能会对您的数据产生误导性的可视化效果——如果您的数据高度偏斜,一些相同/几乎相同的值可能会用对比鲜明的颜色表示。所以请谨慎使用。

    与上面的比较:

    iris <- iris[with(iris, order(Sepal.Length)),]
    iris$rank <- 1:150
    ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, colour=rank)) + scale_colour_gradient2(low="#22FF00", mid="white", high="#FF0000", midpoint=median(iris$rank)) + theme(panel.grid=element_blank(), panel.background=element_rect(fill="black"))
    

    另外,我意识到从红到绿是可能对色盲安全性最低的颜色选择。因此,您需要选择颜色,以便您的光谱不包括红色或绿色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 2015-06-17
      • 2012-08-04
      • 2017-01-11
      • 2012-08-02
      • 2011-03-02
      • 1970-01-01
      相关资源
      最近更新 更多