更改分组绘图的颜色并配置图例

时间:2018-03-15 18:15:34

标签: r ggplot2

我使用以下代码(从堆栈溢出,感谢社区!)来绘制不同群体随时间的比例。

library(tidyverse)
df %>%
  mutate(date = as.POSIXct(date)) %>% #convert date to date
  group_by(group, date) %>% #group
  summarise(prop = sum(outcome=="1")/n()) %>% #calculate proportion 
  ggplot()+
  geom_line(aes(x = date, y = prop, color = group))+
  theme_classic()+
  geom_point(aes(x = date, y = prop, color = group))

使用的样本数据框是:

date <- c("2000-05-01", "2000-05-01", "2000-05-01", "2000-05-02", "2000-05-02", "2000-05-02", "2000-05-02", "2000-05-03", "2000-05-03", "2000-05-03", "2000-05-04", "2000-05-04")
outcome <- c("1", "0", "0", "0","1","1","0", "1","1","0", "1","0")
group <- c("1", "2", "3", "2", "1", "1", "2", "3", "2", "1", "1", "3")
df <- as.data.frame(cbind(date, outcome, group))

打印折线图,我想更改每个组的自动指定颜色,但无法弄清楚如何。有人可以帮我这个吗?

非常感谢提前!

编辑:我还想为群组添加手动标签并更改图例标题。

2 个答案:

答案 0 :(得分:3)

使用ggplot2中的scale_color_*()函数。如果要指定特定颜色,请使用scale_color_manual()。您可以为values =参数提供命名向量,以设置该颜色组的特定颜色值,并为labels =参数设置图例中的自定义文本:

ggplot(...) +
    scale_color_manual(values = c('1' = 'yellow', '2' = 'orange', '3' = 'black'),
                       labels = c('1' = 'fish', '2' = 'cats', '3' = 'dogs'))

scale_color_brewer()功能允许您从设计和测试离散数据的设置选项板中进行选择。如果你不需要特定的颜色,这些调色板通常会使你的阴谋比你任意选择颜色时更清晰。

要修改图例,请使用guides()功能:

ggplot(...) +
    guides(color = guide_legend(title = 'Animal Kinds:'),
           shape = guide_legend(title = 'Food Type:'))

这使您可以在一个地方控制所有传说。您可以为图例的显示方式指定标题和几乎所有可视参数。有关您可以在?guide_legend

中更改的所有参数的列表,请参阅guide_legend()

答案 1 :(得分:0)

参考您关于更改标题的评论:修改标题的最简单方法是使用

F