2015-09-23 3 views
1

Работа с RStudio 0.98.1103, я создаю две версии точно такого же графика: один с цветами и один без. Поскольку оба графика одинаковы (кроме раскраски), я хочу избежать повторного ввода почти тех же команд. Таким образом, я создаю цветной участок, сохранить его, манипулировать им, чтобы сделать его черно-серо-белый и сохранить уменьшенную версию:Удаление всех цветов из строки line ggplot2

library(ggplot2) 

bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight)) + 
    geom_line(aes(color=group)) + theme(legend.position="none") 
bp_bw <- bp + theme_bw() + 
    geom_line() + theme(legend.position="none") 
ggsave("bp_bw.png", bp_bw) 

Хотя bp выглядит вполне нормально, bp_bw не делает. Существует еще blury цвет сияет за черными полосами (красный - зеленый - синий):

enter image description here

Крупным планом:

enter image description here

Как я могу избавиться от этого цвета, т.е. удалить весь цвет полностью от bp? Единственное ограничение: сначала мне нужно создать цветные графики (хотя, конечно, будет работать другой порядок).

+0

Я не вижу размыто цвет цвета вы говорите? Прикрепленное изображение выглядит довольно нормальным для меня, как и сюжет, который я вижу, когда сам запускаю код. Можете ли вы быть более конкретными в отношении того, что вы пытаетесь устранить? –

+0

Я тоже не мог его воспроизвести. Когда я сохраняю оба графика как png, нет видимого цвета, даже когда я увеличиваю масштаб. Как вы их спасли? – Heroka

+0

@ SeñorO и Heroka: Я добавил крупным планом. Цвет действительно есть. – MERose

ответ

3

Я думаю, что лучшее решение будет создать базу и только добавить красящую часть, когда это необходимо:

bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight)) + 
    theme_bw() + theme(legend.position="none") 

bp_col <- bp + geom_line(aes(color=group)) 
bp_bw <- bp + geom_line() 
1

Это (более или менее) имеет смысл. Ваш код bp_bw не избавляется от старых цветных линий, он просто добавляет черные линии сверху. Сглаживание по мере того, как изображение отображается/сохраняется, пропускает некоторые цвета по краям.

Моя рекомендация состоит в том, чтобы изменить цветовую гамму, а не overplot черного цвета на верхней части:

bp_bw2 = bp + scale_color_manual(values = rep("black", 20)) + theme_bw() 

Это изменит цвет на весь черный, а не черчения черного цвета на верхней части цветов. rep("black", 20) - это своего рода хак. По-видимому values не перерабатываются scale_color_manual, но дополнительные значения не используются, поэтому вам нужно указать вектор по крайней мере столько же, сколько количество цветов.

Это также имеет то преимущество, что не нужно повторять вызов geom, и если вы ранее определили цветовую шкалу, это перепишет его. Если вы хотите быть более общим, вы также можете добавить scale_fill_manual(), и вы, вероятно, захотите указать guide = FALSE, чтобы вы не получили очень бесполезную легенду.

Вы также можете проверить scale_colour_grey, просто потому, что это B & W не означает, что все цвета должны быть одинаковыми.

Смежные вопросы