我有同样的问题。我需要八节课。我创建了一个变通办法,使您至少可以使类别最有区别。默认情况下,它会增加由颜色创建程序创建的每种颜色的饱和度值之间的距离。这样,您就可以在黑白打印中获得最明显的类别。如下图所示,这两个图的变化很小,但在bw中可以有所作为。
需要知道R使用脚本:
library("ggplot2")
library("colorspace")
library("RColorBrewer")
# display all color scales with n=8
display.brewer.all(n = 8,type = "div")
# choose a brewer
brewer.pal(8,"Spectral")
# transform palette to HSV values
(palette.HSV<-as(hex2RGB(brewer.pal(8,"Spectral")), "HSV"))
# plot
plot(1:8,1:8,pch=21,bg=hex(palette.HSV),col=hex(palette.HSV),cex=5)
# sort and get indices of HSV values
sort(palette.HSV@coords[,2],index.return=TRUE)
# calculate steps for distance
9/8 # 8 classes until 0.9 saturation
# change accordingly
palette.HSV@coords[1,2]<-0.7875 # swapped with second
palette.HSV@coords[2,2]<-0.675
palette.HSV@coords[3,2]<-0.5625
palette.HSV@coords[4,2]<-0.3375
palette.HSV@coords[5,2]<-0.225
palette.HSV@coords[6,2]<-0.1125
palette.HSV@coords[7,2]<-0.45
palette.HSV@coords[8,2]<-0.9
plot(1:8,1:8,pch=21,bg=hex(palette.HSV),col=hex(palette.HSV),cex=5)
# save your costum colorscale
my.scale<-hex(palette.HSV)
改变值
原始值
编辑:如果您还想更改亮度(请参见下面的讨论),请使用以下代码:
# change brightness accordingly (reverse order)
palette.HSV@coords[1,3]<- 0.225
palette.HSV@coords[2,3]<-0.4
palette.HSV@coords[3,3]<-0.5625
palette.HSV@coords[4,3]<-0.9
palette.HSV@coords[5,3]<-0.7875
palette.HSV@coords[6,3]<-0.675
palette.HSV@coords[7,3]<-0.3
palette.HSV@coords[8,3]<-0.1125