R Language
Schematy kolorów dla grafiki
Szukaj…
viridis - palety przyjazne drukiem i niewidomym kolorom
Viridis (nazwany na cześć ryby chromis viridis ) to niedawno opracowany schemat kolorów matplotlib
biblioteki Python (prezentacja wideo pod linkiem wyjaśnia, w jaki sposób opracowano schemat kolorów i jakie są jego główne zalety). Jest płynnie przeniesiony do R
Istnieją 4 warianty schematów kolorów: magma
, plasma
, inferno
i viridis
(domyślne). Są one wybierane za pomocą parametru option
i są odpowiednio kodowane jako A
, B
, C
i D
Aby zobaczyć 4 schematy kolorów, spójrz na mapy:
( sos wizerunkowy )
Pakiet można zainstalować z CRAN lub github .
Winieta dla pakietu viridis
jest po prostu genialna.
Miłą cechą schematu kolorów viridis
jest integracja z ggplot2
. W pakiecie ggplot2
dwie ggplot2
specyficzne dla scale_color_viridis()
: scale_color_viridis()
i scale_fill_viridis()
. Zobacz przykład poniżej:
library(viridis)
library(ggplot2)
gg1 <- ggplot(mtcars)+
geom_point(aes(x = mpg, y = hp, color = disp), size = 3)+
scale_color_viridis(option = "B")+
theme_minimal()+
theme(legend.position = c(.8,.8))
gg2 <- ggplot(mtcars)+
geom_violin(aes(x = factor(cyl), y = hp, fill = factor(cyl)))+
scale_fill_viridis(discrete = T)+
theme_minimal()+
theme(legend.position = 'none')
library(cowplot)
output <- plot_grid(gg1,gg2, labels = c('B','D'),label_size = 20)
print(output)
RColorBrewer
Projekt ColorBrewer jest bardzo popularnym narzędziem do wybierania harmonijnie dopasowanych palet kolorów. RColorBrewer
jest portem projektu dla R
i zapewnia także palety przyjazne dla niewidomych.
Przykład zastosowania
colors_vec <- brewer.pal(5, name = 'BrBG')
print(colors_vec)
[1] "#A6611A" "#DFC27D" "#F5F5F5" "#80CDC1" "#018571"
RColorBrewer
tworzy opcje kolorowania dla ggplot2
: scale_color_brewer
i scale_fill_brewer
.
library(ggplot2)
ggplot(mtcars)+
geom_point(aes(x = mpg, y = hp, color = factor(cyl)), size = 3)+
scale_color_brewer(palette = 'Greens')+
theme_minimal()+
theme(legend.position = c(.8,.8))
Przydatna funkcja do migotania wektora kolorów
Dość często trzeba rzucić okiem na wybraną paletę kolorów. Jednym eleganckim rozwiązaniem jest następująca samodzielnie zdefiniowana funkcja:
color_glimpse <- function(colors_string){
n <- length(colors_string)
hist(1:n,breaks=0:n,col=colors_string)
}
Przykład zastosowania
color_glimpse(blues9)
przestrzeń kolorów - kliknij i przeciągnij interfejs dla kolorów
Przestrzeń colorspace
pakietu zapewnia GUI do wybierania palety. Po wywołaniu funkcji choose_palette()
pojawia się następujące okno:
Po wybraniu palety po prostu naciśnij OK
i nie zapomnij zapisać danych wyjściowych w zmiennej, np. pal
.
pal <- choose_palette()
Dane wyjściowe to funkcja, która przyjmuje n
(liczbę) jako dane wejściowe i generuje wektor kolorów o długości n
zgodnie z wybraną paletą.
pal(10)
[1] "#023FA5" "#6371AF" "#959CC3" "#BEC1D4" "#DBDCE0" "#E0DBDC" "#D6BCC0" "#C6909A" "#AE5A6D" "#8E063B"
podstawowe funkcje koloru R.
colors()
funkcji colors()
wyświetlają wszystkie nazwy kolorów rozpoznawane przez R. Istnieje ładny plik PDF, w którym można zobaczyć te kolory.
colorRampPalette
tworzy funkcję interpolującą zestaw danych kolorów w celu utworzenia nowych palet kolorów. Ta funkcja wyjściowa przyjmuje n
(liczbę) jako dane wejściowe i tworzy wektor kolorów o długości n
interpolujący kolory początkowe.
pal <- colorRampPalette(c('white','red'))
pal(5)
[1] "#FFFFFF" "#FFBFBF" "#FF7F7F" "#FF3F3F" "#FF0000"
Dowolny konkretny kolor może zostać wygenerowany za pomocą funkcji rgb()
:
rgb(0,1,0)
daje green
kolor.
Palety przyjazne dla niewidomych
Mimo że osoby niewidome dla kolorów potrafią rozpoznać szeroką gamę kolorów, rozróżnianie niektórych kolorów może być trudne.
RColorBrewer
zapewnia palety przyjazne dla RColorBrewer
:
library(RColorBrewer)
display.brewer.all(colorblindFriendly = T)
Color Universal Design z University of Tokyo proponuje następujące palety:
#palette using grey
cbPalette <- c("#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
#palette using black
cbbPalette <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")