Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2在单个图形上绘制多条线_R_Ggplot2 - Fatal编程技术网

R ggplot2在单个图形上绘制多条线

R ggplot2在单个图形上绘制多条线,r,ggplot2,R,Ggplot2,我有一个运行7天的数据集,为每一天生成累积计数,分为15分钟 时间段从早上12点开始,一直持续到第二天12点。订单很重要 下面是一个虚构的样本(为混乱的性质道歉) 库(tidyverse) 在这个答案的帮助下加上_break 我得到了以下结果,它将x轴旋转到小时: mydf0=melt(ungroup(mydf)) names(mydf0)[1]="Time" mydf0$Time=as.factor(as.character(hour(ymd_hm(paste("2018-01-01",myd

我有一个运行7天的数据集,为每一天生成累积计数,分为15分钟

时间段从早上12点开始,一直持续到第二天12点。订单很重要

下面是一个虚构的样本(为混乱的性质道歉)

库(tidyverse)

在这个答案的帮助下加上_break

我得到了以下结果,它将x轴旋转到小时:

mydf0=melt(ungroup(mydf))
names(mydf0)[1]="Time"
mydf0$Time=as.factor(as.character(hour(ymd_hm(paste("2018-01-01",mydf0$Time,sep=" ")))))
mydf0$Time <- factor(mydf0$Time,levels=c(as.character(seq(12,23,1)),as.character(seq(0,11,1))))
levels(mydf0$Time)
mydf0$size <- rep(.5, nrow(mydf0))
mydf0$size[mydf0$variable=="AVG"] <- 2
ggplot(mydf0, aes(x=Time, y = value,col=variable,group=variable,size=size))+geom_line() +
  scale_size(range = c(0.5, 2), guide="none")
mydf0=melt(解组(mydf))
名称(mydf0)[1]=“时间”
mydf0$Time=as.因子(as.字符(小时)(ymd_hm(粘贴(“2018-01-01”,mydf0$Time,sep=”“)))

mydf0$Time有了这个答案的帮助

我得到了以下结果,它将x轴旋转到小时:

mydf0=melt(ungroup(mydf))
names(mydf0)[1]="Time"
mydf0$Time=as.factor(as.character(hour(ymd_hm(paste("2018-01-01",mydf0$Time,sep=" ")))))
mydf0$Time <- factor(mydf0$Time,levels=c(as.character(seq(12,23,1)),as.character(seq(0,11,1))))
levels(mydf0$Time)
mydf0$size <- rep(.5, nrow(mydf0))
mydf0$size[mydf0$variable=="AVG"] <- 2
ggplot(mydf0, aes(x=Time, y = value,col=variable,group=variable,size=size))+geom_line() +
  scale_size(range = c(0.5, 2), guide="none")
mydf0=melt(解组(mydf))
名称(mydf0)[1]=“时间”
mydf0$Time=as.因子(as.字符(小时)(ymd_hm(粘贴(“2018-01-01”,mydf0$Time,sep=”“)))

mydf0$Time另一个建议,x轴采用
Date
格式,每个变量值的
alpha
级别不同:

#添加一个新的x变量(假设为一小时)
mydf$hour=12,
粘贴(“2018-01-30”,mydf$value,”:00“,sep=”“),
粘贴(“2018-01-31”,mydf$value,”:00“,sep=”“))
#更改为长数据格式

mydf_m另一个建议,x轴采用
Date
格式,每个变量值采用不同的
alpha
级别:

#添加一个新的x变量(假设为一小时)
mydf$hour=12,
粘贴(“2018-01-30”,mydf$value,”:00“,sep=”“),
粘贴(“2018-01-31”,mydf$value,”:00“,sep=”“))
#更改为长数据格式

mydf_m Hi@bVa,谢谢你的回答。不幸的是,时间的顺序很重要。需要从中午12点到中午12点。我尝试使用
lubridate
hm函数将所有内容转换为时间,但ggplot(非常正确)根据升序对其进行排序time@JohnSmith我用一个小技巧编辑了我的答案,以获得一个正确的x刻度。Hi@bVa,当运行代码创建长数据帧时,我得到
错误:列“value”必须有一个唯一的名称
@JohnSmith抱歉,我忘了更改变量名:将
更改为
val
聚集
中,我编辑了它。完美,正是我要找的。今天下午我要消化这个。再次感谢,你真的让我走出了困境。我@bVa,谢谢你的回答。不幸的是,时间的顺序很重要。需要从中午12点到中午12点。我尝试使用
lubridate
hm函数将所有内容转换为时间,但ggplot(非常正确)根据升序对其进行排序time@JohnSmith我用一个小技巧编辑了我的答案,以获得一个正确的x刻度。Hi@bVa,当运行代码创建长数据帧时,我得到
错误:列“value”必须有一个唯一的名称
@JohnSmith抱歉,我忘了更改变量名:将
更改为
val
聚集
中,我编辑了它。完美,正是我要找的。今天下午我要消化这个。再次感谢,你真的让我走出了困境。我@Antonis,谢谢你这么快的回答。这种方法的问题是时间从午夜到午夜,我需要它从中午到中午运行,因此基本上是数据帧
mydf
部分
mydf
Hi@John Smith中的顺序。对不起,我不明白那部分。我改变了我的代码,我想现在它可以正常工作了。如果你能找到一种在图形2中以可见方式显示时间值的方法,请告诉我:)嗨@Antonis,谢谢你这么快回答。这种方法的问题是时间从午夜到午夜,我需要它从中午到中午运行,因此基本上是数据帧
mydf
部分
mydf
Hi@John Smith中的顺序。对不起,我不明白那部分。我改变了我的代码,我想现在它可以正常工作了。如果您找到一种在图形2中以可见方式显示时间值的方法,请告诉我:)
    mydf0=melt(ungroup(mydf))
names(mydf0)[1]="Time"
mydf0$Time <- ordered(mydf0$Time,levels=mydf0$Time[1:96])
mydf0$size <- rep(.5, nrow(mydf0))
mydf0$size[mydf0$variable=="AVG"] <- 2
ggplot(mydf0, aes(x=Time, y = value,col=variable,group=variable,size=size))+geom_line() +
  scale_size(range = c(0.5, 2), guide="none")+ scale_x_discrete(breaks=as.character(seq(0,23,1)))
# Add a new x variable (supposed to be an hour)
mydf$hour <- as.POSIXct(ifelse(as.double(substr(mydf$value, 1, 2)) >= 12, 
                           paste("2018-01-30 ", mydf$value, ":00", sep = ""), 
                           paste("2018-01-31 ", mydf$value, ":00", sep = "")))


# change to long data format
mydf_m <- gather(mydf, "day", "val", c(2:9))

# reorder variable values
mydf_m$day <- factor(mydf_m$day, levels=c("MON", "TUE", "WED", "THUR", "FRI", "SAT", "SUN", "AVG"))

library(scales) # for date_format in scale_x_datetime
ggplot(mydf_m, aes(x = hour, y = val, color = day, alpha = day, size = day)) +
  theme_bw() + # 
  geom_line() +
  scale_x_datetime(labels = date_format("%H:%M", tz = "CET")) + # x axis
  scale_alpha_manual(values = c("MON" = 0.3, "TUE" = 0.3, "WED" = 0.3, "THUR" = 0.3, "FRI" = 0.3, "SAT" = 0.3, "SUN" = 0.3, "AVG" = 0.8), guide = "none") + 
  scale_size_manual(values = c("MON" = 1, "TUE" = 1, "WED" = 1, "THUR" = 1, "FRI" = 1, "SAT" = 1, "SUN" = 1, "AVG" = 3))