3

我使用 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为对数刻度,因为它代表比率。我的问题是如何增加刻度点之间的对比度?例如,使它成为规模不同部分之间的差异?在我的情况下,比例总是连续的(实数)。任何有关这方面的观点都会有所帮助。

4

1 回答 1

5

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

+ 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"))

高对比度散点图,按等级排序的数据显示颜色

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

于 2013-07-06T20:56:57.067 回答