ggplot2 pour les impressions en niveaux de gris
Ggplot2 produit des graphiques fantaisie pour les impressions écran/couleur, mais le fond gris et les couleurs interfèrent lors de l'impression en niveaux de gris. Pour une meilleure lisibilité, je préfère désactiver le fond gris et utiliser des générateurs de couleurs qui produisent différentes nuances de gris ou différents types de traits de remplissage pour distinguer les groupes.
3 réponses
* * modifier * * code mis à jour: geom_bar
nécessite un stat
.
theme_bw
c'est peut-être ce que tu cherches. Si vous tracez un géom qui a un remplissage tel que des barres, la fonction scale_fill_grey
vous donnera le contrôle sur les nuances de gris. Si vous tracez un géom qui a une couleur (comme une ligne ou des points), la fonction scale_colour_grey
vous donnera le contrôle. Pour autant que je sache, ggplot ne trace pas les remplissages à motifs. En supposant que vous tracez des barres, ce qui suit tracera des barres colorées sur un gris fond.
library(ggplot2)
data <- read.table(text =
"type Year Value
A 2000 3
B 2000 10
C 2000 11
A 2001 4
B 2001 5
C 2001 12", sep = "", header = TRUE)
(p = ggplot(data = data, aes(x = factor(Year), y = Value)) +
geom_bar(aes(fill = type), stat="identity", position = "dodge"))
Ce qui suit change les barres colorées en nuances de gris. Notez que l'une des barres se perd en arrière-plan.
(p = p + scale_fill_grey(start = 0, end = .9))
Ce qui suit supprime le fond gris.
(p = p + theme_bw())
Un point a une couleur, pas un remplissage. Donc, pour utiliser des nuances de gris sur les points, vous auriez besoin de quelque chose comme ça.
(p = ggplot(data = data, aes(x = factor(Year), y = Value)) +
geom_point(aes(colour = type), size = 5) +
scale_colour_grey(start = 0, end = .9) +
theme_bw())
Voici un exemple simple de ce que vous voulez
library(ggplot2)
data <- read.table(text =
"Letter Year Value
A 1998 5
B 1999 10
C 2000 15
A 2000 7
B 2001 15
C 2002 20", sep = "", header = TRUE)
ggplot(data = data, aes(x = factor(Year), y = Value, colour = Letter)) +
geom_line(aes(group = Letter)) + scale_colour_grey() +
theme(panel.background = element_rect(fill='white', colour='black'))
Les autres répondeurs se sont concentrés sur l'ajustement automatique des couleurs de ligne/barre. Dans une publication imprimée, cependant, je préférerais ne pas avoir de lignes gris clair, etc. comme ils sont difficiles à reconnaître et à distinguer. Voici une solution qui ajuste automatiquement le type de ligne (ce que je ne savais pas possible jusqu'à il y a un jour).
library(ggplot2)
theme_set(theme_bw())
data <- read.table(text =
"type Year Value
A 1998 6
A 1999 8
A 2000 6
A 2001 7
B 1998 4
B 1999 5
B 2000 10
B 2001 5
C 1998 8
C 1999 6
C 2000 9
C 2001 8", sep = "", header = TRUE)
p <- ggplot(data=data,
aes(x = factor(Year),
y = Value,
linetype = factor(type)))
p <- p + geom_line(aes(group = factor(type)),
size=0.8)
Notez que vous pouvez personnaliser facilement ggplot thèmes. Voici un résultat alternatif en utilisant le mien thème ggplot minimaliste :
(L'anticrénelage semble beaucoup mieux lorsqu'il est exporté au format pdf qu'ici [en png].)