适用于许多数据类的R调色板

Jul*_*iaz 10 r colors ggplot2

R中的调色板是否有任何可以处理许多数据类的好包?我有16个顺序数据类.我尝试了RColorBrewer,但它最多有9个数据类,我也试过了rainbow(),但它对顺序数据没有吸引力.谢谢

Kev*_*ght 21

经过大量的实验,我想出了大多数可以区分的25种颜色.这适用于分类数据,而不是连续/顺序数据.

c25 <- c(
  "dodgerblue2", "#E31A1C", # red
  "green4",
  "#6A3D9A", # purple
  "#FF7F00", # orange
  "black", "gold1",
  "skyblue2", "#FB9A99", # lt pink
  "palegreen2",
  "#CAB2D6", # lt purple
  "#FDBF6F", # lt orange
  "gray70", "khaki2",
  "maroon", "orchid1", "deeppink1", "blue1", "steelblue4",
  "darkturquoise", "green1", "yellow4", "yellow3",
  "darkorange4", "brown"
)
pie(rep(1, 25), col = c25)
Run Code Online (Sandbox Code Playgroud)

  • 优秀的调色板!谢谢!这是一个修改后的 c16 版本: c("dodgerblue2", "#E31A1C", "green4", "#6A3D9A", "#FF7F00", "black", "gold1", "skyblue2", "palegreen2", "# FDBF6F”、“gray70”、“栗色”、“orchid1”、“darkturquoise”、“darkorange4”、“brown”) (2认同)

Jot*_* eN 18

Polychrome包允许创建具有多种不同颜色的调色板。一些例子:

# install.packages("Polychrome")
library(Polychrome)

# build-in color palette
Glasbey = glasbey.colors(32)
swatch(Glasbey)
Run Code Online (Sandbox Code Playgroud)


# create your own color palette (36 colors) based on `seedcolors`
P36 = createPalette(36,  c("#ff0000", "#00ff00", "#0000ff"))
swatch(P36)
Run Code Online (Sandbox Code Playgroud)


# create your own color palette (50 colors) based on `seedcolors`
P50 = createPalette(50,  c("#ff0000", "#00ff00", "#0000ff"))
swatch(P50)
Run Code Online (Sandbox Code Playgroud)


Kev*_*ght 10

'pals'包装有几种不同的调色板,每种调色板都设计成具有不同的颜色.以下是可用的调色板:

library(pals)
pal.bands(alphabet, alphabet2, cols25, glasbey, kelly, polychrome, 
  stepped, tol, watlington,
  show.names=FALSE)
Run Code Online (Sandbox Code Playgroud)

pals包中的离散调色板

  • 谢谢!请注意,在 ggplot2 中,您需要使用 unname(alphabet()) 等来删除颜色名称。 (3认同)

Tun*_*ung 10

对于色盲观众,请查看包装Safe中的调色板rcartocolor。该调色板由 12 种易于区分的颜色组成。

# install.packages("rcartocolor")
# or
# install.packages("remotes")
# remotes::install_github("Nowosad/rcartocolor")
library(rcartocolor)

nColor <- 12
scales::show_col(carto_pal(nColor, "Safe"))
Run Code Online (Sandbox Code Playgroud)

另一种流行的色盲友好调色板是冈部伊藤色阶

例子:

# install.packages("rcartocolor")
# or
# install.packages("remotes")
# remotes::install_github("Nowosad/rcartocolor")
library(rcartocolor)

nColor <- 12
scales::show_col(carto_pal(nColor, "Safe"))
Run Code Online (Sandbox Code Playgroud)


Fer*_*oao 8

作为 Kevin Wright,我发现对我来说最好的方法是手动制作调色板。在这里,我贡献了我的调色板和一种将其绘制为多边形的方法。

# /sf/ask/1087382271/
cuts <- function(x) {
    n <- length(x) %/% 4
    map <- rep(c(rep(TRUE,4),FALSE), n)
    result <- rep(NA, n*5)
    result[map] <- x
    result
    }
{
rownumber <- 5
xfloor    <- 0
yheight   <- 6
widthCol  <- 1
colSpacer <- 0.2
# names in: http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf
manualcolors<-c('black','forestgreen', 'red2', 'orange', 'cornflowerblue', 
                'magenta', 'darkolivegreen4', 'indianred1', 'tan4', 'darkblue', 
                'mediumorchid1','firebrick4',  'yellowgreen', 'lightsalmon', 'tan3',
                "tan1",'darkgray', 'wheat4', '#DDAD4B', 'chartreuse', 
                'seagreen1', 'moccasin', 'mediumvioletred', 'seagreen','cadetblue1',
                "darkolivegreen1" ,"tan2" ,   "tomato3" , "#7CE3D8","gainsboro")

squareVec<-c(rep(rownumber,ceiling(length(manualcolors)/rownumber) ) )

map<-mapybot<-mapytop<-mapxbot<-mapxtop<-numeric()

for (i in 1:length(squareVec)){
    map <- seq(0, 5, length.out = squareVec[i]+1 )
    mapybot <- c(mapybot,(map[1:(length(map)-1)] ) )
    mapytop <- mapybot + (map[2]-map[1] )
    mapxbot <- c(mapxbot,(rep(xfloor + (widthCol*(i-1)), squareVec[i]) ) )
    mapxtop <- c(mapxtop,(rep(xfloor + (widthCol* i ) - colSpacer,squareVec[i]) ) )
}

x <- cbind(mapxbot,mapxbot,mapxtop,mapxtop ) 
y <- cbind(mapybot,mapytop,mapytop,mapybot )

opar<-par(no.readonly=TRUE) # save par

par(mar=c(0,0,0,0), font=2)
plot("", xlim=c(-0.2,max(x)), ylim=c(min(y), max(y)), 
     ylab = "", xaxt='n', 
     xlab = "", yaxt='n',
     main = NULL)

polygon(x=cuts(t(x)), y=cuts(t(y)), col=manualcolors, lwd=2)

text(x=t(x[1:length(manualcolors)]), 
     y=t(y[1:length(manualcolors)])+(yheight/rownumber)/2, 
     labels= manualcolors, 
     cex=0.8, col="white", pos=4
     )

par(opar) # restore par
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Tje*_*ebo 7

现在有colorspacehttp://colorspace.r-forge.r-project.org/reference/hcl_palettes.html

例如,创建一个包含 20 种不同颜色的调色板:

library(colorspace)
q20 <- qualitative_hcl(20, "Dark2")
demoplot(q20, "bar")
Run Code Online (Sandbox Code Playgroud)


mds*_*ner 5

试试'?colorRampPalette' 并制作你自己的函数。