我有这个数据代表随时间变化的变量Q1的值。 时间不以日期表示,而是以自一个事件以来的天数表示。
https://www.mediafire.com/file/yfzbx67yivvvkgv/dat.xlsx/file
我正在尝试绘制Q1沿时间的平均值,例如此处
Plotting average of multiple variables in time-series using ggplot
我正在使用此代码
library(Hmisc)
ggplot(dat,aes(x=days,y=Q1,colour=type,group=type)) +
stat_summary(fun.data = "mean_cl_boot", geom = "smooth")
答案 0 :(得分:1)
除了该代码(似乎不适用于新的ggplot2
版本)之外,您还遇到一个问题,即您的数据确实不适合这种绘图。这段代码实现了您想要做的事情:
dat <- rio::import("dat.xlsx")
library(ggplot2)
library(dplyr)dat %>%
ggplot(aes(x = days, y = Q1, colour = type, group = type)) +
geom_smooth(stat = 'summary', fun.data = mean_cl_boot)
但是该图并没有真正告诉您任何信息,仅是因为您的数据中没有足够的值。多数情况下,每天似乎只有一个值,价目表会快速地上下跳跃,而且几天之间的间隔有时会很大。
将值分组为时间跨度时,您会看到此信息。在这里,我使用了round(days, -2)
,它将四舍五入到最接近的100(例如756变成800,301变成300,49变成0):
dat %>%
mutate(days = round(days, -2)) %>%
ggplot(aes(x = days, y = Q1, colour = type, group = type)) +
geom_smooth(stat = 'summary', fun.data = mean_cl_boot)
这应该与链接相同,但是具有很大的置信区间。这并不奇怪,因为如上所述,值在值1-5之间快速交替。希望对您有所帮助。