数据分析(R语言)——ggplot绘制多线图结果图颜色不匹配

问题描述:

MelbCV.csv是墨尔本人行道监控数据的一个子集如下图,依据统计数据回答各个监控点一天的哪些时段是行人通过的高峰?所有监控点是否有一致的人流高峰时段?若有,是哪个(些)时段?哪个路口人流量最大?哪个路口人流量最小?依据什么得出的结论?人流量的最大值出现在哪个监控点的哪天的哪个时段?
下面是数据集:
在这里插入图片描述
下面是数据集的说明

colname含义类型唯一值个数众数
Date日期character30所有值出现频次相同
Year年份double1所有值出现频次相同,2012
Month月份double1所有值出现频次相同,9
Mdatedouble30所有值出现频次相同
Weekday_End表示周末或工作日,10代表工作日,20代表周末double2所有值出现频次相同,10,20
Day表示一周里的第几天,周日是第一天double71,7
Hour表示一天中的第几个小时double24所有值出现频次相同
Town_Hall-West在Town_Hall-West的人行道通过人数double61335
Collins Place-South在Collins Place-South的人行道通过人数double48510
Australia on Collins在Australia on Collins的人行道通过人数double49816
Bourke Street Mall-South在Bourke Street Mall-South的人行道通过人数double55212
Bourke Street Mall-North在Bourke Street Mall-North的人行道通过人数double5484
Melbourne Central在Melbourne Central的人行道通过人数double59832
Flagstaff Station在Flagstaff Station的人行道通过人数double39210
State Library在State Library的人行道通过人数double30824

下面是相关的部分代码:

alter<-MelbCV
alter[is.na(alter)]<-mean(MelbCV$`State Library`,na.rm=TRUE)#应用平均值
t_peak<-group_by(alter,Hour)%>%summarise(count=n(),mean1=mean(`Town_Hall-West`),
                                          mean2=mean(`Collins Place-South`),
                                          mean3=mean(`Australia on Collins`),
                                          mean4=mean(`Bourke Street Mall-South`),
                                          mean5=mean(`Bourke Street Mall-North`),
                                          mean6=mean(`Melbourne Central`),
                                          mean7=mean(`Flagstaff Station`),
                                          mean8=mean(`State Library`))
#col_fill<-factor(colnames(MelbCV[,8:15]))
ggplot(t_peak)+ylab("人数")+
  geom_line(aes(Hour,mean1,color="tomato"))+
  geom_line(aes(Hour,mean2,color="orange"))+
  geom_line(aes(Hour,mean3,color="mediumblue"))+
  geom_line(aes(Hour,mean4,color="purple"))+
  geom_line(aes(Hour,mean5,color="gold"))+
  geom_line(aes(Hour,mean6,color="hotpink"))+
  geom_line(aes(Hour,mean7,color="green"))+
  geom_line(aes(Hour,mean8,color="black"))+
  scale_x_continuous(breaks=seq(0:22))
  #scale_color_manual(values = c("tomato","orange","mediumblue","purple","gold","hotpink","green","black"),labels=as.vector(col_fill))

在这里插入图片描述
做出的图和我设定的颜色没有一毛钱关系

原因分析:

解决方案:

转载自知乎@陆壹肆
根据上面的文章,将上面的代码做了一些修改

alter<-MelbCV
alter[is.na(alter)]<-mean(MelbCV$`State Library`,na.rm=TRUE)#应用平均值
#t_peak里将count列删除了
t_peak<-group_by(alter,Hour)%>%summarise(mean1=mean(`Town_Hall-West`),
                                          mean2=mean(`Collins Place-South`),
                                          mean3=mean(`Australia on Collins`),
                                          mean4=mean(`Bourke Street Mall-South`),
                                          mean5=mean(`Bourke Street Mall-North`),
                                          mean6=mean(`Melbourne Central`),
                                          mean7=mean(`Flagstaff Station`),
                                          mean8=mean(`State Library`))
col_fill<-colnames(MelbCV[,8:15])
max_num<-apply(t_peak,2,FUN =  function(x) {
  max(x)
})
max_hour<-apply(t_peak,2,FUN =  function(x) {
  which.max(x)-1
})
#这里增加了将表格融合
library(reshape2)
long_peak <- melt(t_peak, id="Hour")#融合效果如下图一
ggplot(data=long_peak,aes(x=Hour, y=value, group=variable, color=variable))+
  geom_line()#输出效果如下

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值