似乎黑色到红色或红色到深红色给您的色彩空间非常小。您可以使用十六进制代码为低和高设置分配更具体的颜色,并添加黑色背景以提高对比度。例如:
+ 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.htm 和iwanthue 是挑选颜色的好资源),我不知道是否有办法设置渐变以便对比度在整个中被最大化,而不会产生一些非常复杂的彩虹色。您可能知道,数据中任何两个给定点之间的对比度与这些点的值之间的差异成正比,因此在渐变的不同区域设置中改变这种关系可能是不可取的,据我所知是不可能的在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"))
另外,我意识到从红到绿是可能对色盲安全性最低的颜色选择。因此,您需要选择颜色,以便您的光谱不包括红色或绿色。