ggplot2 создает фантастические графики для экранных/цветных отпечатков, но серый цвет и цвета мешают при печати их в оттенках серого. Для лучшей удобочитаемости я бы предпочел отключить серый фон и использовать цветовые генераторы, которые производят либо разные оттенки серого, либо различные виды штрихов заполнения, чтобы отличить группы.
Ggplot2 для распечаток в оттенках серого
Ответ 1
** EDIT ** Обновленный код: geom_bar
требуется stat
.
theme_bw
может быть тем, что вам нужно. Если вы планируете геометрию с заполнением, например, в барах, функция scale_fill_grey
даст вам контроль над оттенками серого. Если вы рисуете геометрию, имеющую цвет (например, линию или точки), функция scale_colour_grey
даст вам элемент управления. Насколько мне известно, ggplot не создает узорные заливки. Предполагая, что вы нарисовываете полосы, следующее будет отображать цветные полосы на сером фоне.
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"))
Следующее изменяет цветные полосы на оттенки серого. Обратите внимание, что один из баров теряется в фоновом режиме.
(p = p + scale_fill_grey(start = 0, end = .9))
Следующее удаляет серый фон.
(p = p + theme_bw())
Точка имеет цвет, а не заливку. Поэтому для использования оттенков серого по точкам вам понадобится что-то вроде этого.
(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())
Ответ 2
Вот простой пример того, что вы хотите
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'))
Ответ 3
Другие ответчики сосредоточились на настройке цветов линии/бара автоматически. Однако в печатном издании я бы предпочел не иметь светло-серые линии и т.д., Так как их трудно распознать и отличить. Здесь решение, которое автоматически настраивает тип линии (чего я не знал, было возможно до дня назад).
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)
Обратите внимание, что вы можете легко настроить темы ggplot. Вот альтернативный результат, используя мою собственную минималистическую тему ggplot:
(Сглаживание выглядит лучше при экспорте в pdf, чем здесь [в png].)