同じ問題がありました。8つのクラスが必要でした。少なくともカテゴリを最も識別可能なものにするための回避策を作成しました。デフォルトでcolorbrewerによって作成される各色の彩度値間の距離を増やします。これにより、白黒印刷で最も識別可能なカテゴリを取得できます。以下に示すように、2つのプロットはわずかに変化しますが、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