【发布时间】:2015-07-03 19:48:59
【问题描述】:
我正在绘制风速的时间序列,并希望根据季节为线条着色。整个数据集中有几个缺失的数据,其中一个差距是几个月。 当我根据季节绘制带有颜色的 ggplot 时,不幸的是,它绘制了从季节结束(例如冬季)到本季节下一次出现(例如冬季)的连接线。我怎样才能阻止它这样做?
这是我的数据摘录:
date wspd_havg10m_kn avg_wd season
1 2013-12-06 00:25:00 9.8358531 50 Winter
2 2013-12-06 01:25:00 10.5064795 56 Winter
3 2013-12-06 02:25:00 11.8477322 55 Winter
4 2013-12-06 03:25:00 NA 53 NA
5 2013-12-06 04:25:00 13.1889849 47 Winter
6 2013-12-06 05:25:00 13.1889849 60 Winter
7 2013-12-06 06:25:00 NA 51 NA
8 2013-12-06 07:25:00 9.6123110 50 Winter
9 2013-12-06 08:25:00 7.6004320 53 Winter
10 2013-12-06 09:25:00 9.6123110 52 Winter
11 2013-12-06 10:25:00 8.2710583 66 Winter
# add column that specifies the season
mydata$season<-time2season(mydata$date, out.fmt="seasons", type="default")
#capitalize season categories
mydata$season<-capitalize(mydata$season)
g<-ggplot(mydata, aes(date, wspd_havg10m_kn, color=season))+
geom_line(size=0.1) +
geom_smooth(colour = "black",size = 1, method = "gam", formula = y ~ s(x), bs = "cs") +
scale_y_continuous(limits = c(0,45), breaks = seq(0,45,5))+
scale_color_discrete(name="Season", breaks=c("Spring","Summer","Autumm", "Winter"))+
xlab("\nSampling Period (mm/yy)\n") +
ylab("Hourly Wind Speed Sample (kt)\n")
# adjust the way labels and ticks are set on the x axis:
g+ scale_x_datetime(breaks = date_breaks ("2 months"), labels= date_format ("%m/%y"), limits=c(start_date, end_date))
当我错过风速时,我尝试将季节设置为 NA,但这并没有起到任何作用。上一季到下一季的连线我还留着……
有什么想法吗? 干杯 桑德拉
【问题讨论】:
-
不知何故,您需要为每个连接的线段生成一个唯一的组 ID。没那么简单……
-
感谢您的 cmets!有时最难的部分是知道谷歌的内容:-) 我的问题是当我只绘制风速 (wspd_havg10m_kn) 时我没有它。它根据数据集中的 NA 在行中留下间隙。只有当我添加颜色=季节时,我才能得到从季节结束到季节开始的连接线。这就是为什么我认为我只需要在赛季变量中添加 NA,但不幸的是没有成功。
-
该示例没有很好地处理 NA,并对时间变量如何分配以供
diff工作进行了一些假设。只要您对时间变量进行了排序,这种方式就适用于一般的 NA。