如何解决ggplot2中数据的图例
我的数据如下。
Week Africa Americas Asia Europe Oceania Burma Cambodia China..Guangxi. China..Yunnan. Laos Thailand Vietnam
1 5 0 6 2912 4 5 0 1 46 26 0 8 2
2 6 0 15 19827 33 12 0 1 127 117 0 19 8
3 7 0 19 42551 49 15 0 1 210 149 0 32 14
4 8 1 22 72721 57 15 0 1 238 171 0 35 16
5 9 1 28 78517 294 15 0 1 251 174 0 35 16
6 10 8 105 86698 2828 31 0 1 252 174 0 43 16
当我想在ggplot2中绘制图形时,将为我提供图形,但不会显示说明线条颜色属于哪个组的图例。如何将其添加到图形中?
ggplot(data=df,aes(x=Week))+
geom_line(aes(y=Africa),color= "#8dd3c7")+
geom_line(aes(y=Americas),color= "#ffffb3")+
geom_line(aes(y=Asia),color= "#bebada")+
geom_line(aes(y=Europe),color= "#fb8072")+
geom_line(aes(y=Oceania),color= "#80b1d3")+
geom_line(aes(y=Burma),color= "#fdb462")+
geom_line(aes(y=Cambodia),color= "#b3de69")+
geom_line(aes(y=China..Guangxi.),color= "#fccde5")+
geom_line(aes(y=China..Yunnan.),color= "#d9d9d9")+
geom_line(aes(y=Laos),color= "#bc80bd")+
geom_line(aes(y=Thailand),color= "#ccebc5")+
geom_line(aes(y=Vietnam),color= "#ffed6f")
我提供的数据格式是否错误,所以我不会自动执行此操作,或者我在这里做错了什么?
干杯, J
解决方法
我的建议是,您首先需要使用tidyr软件包中的collect函数将此数据帧更改为长数据帧
df % collect(df,key =“ country”,value =“ count”,3:14)
然后在ggplot中,您可以编写如下代码:
ggplot(data = df,aes(x = Week,y = count,color = country))+ geom_line()
长数据框更好,因为每一列(例如“ country”)都有一个变量,而ggplot最适合这种数据框。图例将自动显示
,您还可以使用pivot_longer()
,这是获取带有图例的图,然后像这样缩放颜色的正确方法:
library(tidyverse)
#Code
df %>% pivot_longer(-Week) %>%
ggplot(aes(x=Week,y=value,group=name,color=name))+
geom_line()+
scale_color_manual(values=c("Africa"="#8dd3c7","Americas"="#ffffb3","Asia"="#bebada","Europe"="#fb8072","Oceania"="#80b1d3","Burma"="#fdb462","Cambodia"="#b3de69","China..Guangxi."="#fccde5","China..Yunnan."="#d9d9d9","Laos"="#bc80bd","Thailand"= "#ccebc5","Vietnam"="#ffed6f"))+
labs(color='Country')
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。