Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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 ggplot:使用重复时间值绘制时间序列_R_Ggplot2 - Fatal编程技术网

R ggplot:使用重复时间值绘制时间序列

R ggplot:使用重复时间值绘制时间序列,r,ggplot2,R,Ggplot2,我有几个小时的数据,如下所示: df% ggplot(aes(y=平均值,x=小时))+ 几何平滑(aes(y=sd)) 但是,默认情况下,我的hour参数被分解为每小时只显示一次,这可以从添加geom_point()中看出,但我希望所有48个(实际上更多)值都显示在我的x轴上。 我意识到一定有一个参数丢失了,但找不到。您需要定义用作日期时间对象的小时数,其中第二个减半的小时数在第二天 您可以使用以下代码: library(dplyr) library(ggplot2) set.seed(9

我有几个小时的数据,如下所示:

df%
ggplot(aes(y=平均值,x=小时))+
几何平滑(aes(y=sd))
但是,默认情况下,我的
hour
参数被分解为每小时只显示一次,这可以从添加
geom_point()
中看出,但我希望所有48个(实际上更多)值都显示在我的x轴上。
我意识到一定有一个参数丢失了,但找不到。

您需要定义用作日期时间对象的小时数,其中第二个减半的小时数在第二天

您可以使用以下代码:

library(dplyr)
library(ggplot2)

set.seed(9876) # for reproducibility
df <- data.frame('hour' = seq(c(ISOdate(2019,12,1)), by = "hour", length.out = 48),
                 'mean' = rnorm(48),
                 'sd' = rnorm(48))

df %>%
  ggplot(aes(y = mean, x = hour)) +
  geom_smooth(aes(y = sd))
库(dplyr)
图书馆(GG2)
设定种子(9876)#用于再现性
df%
ggplot(aes(y=平均值,x=小时))+
几何平滑(aes(y=sd))

请告诉我这是否是你想要的

如果我理解正确,您希望geom_平滑线表示数据帧中的平均列,错误功能区表示sd列

我相信这应该会给出您想要的输出:

library(dplyr)
library(ggplot2)

df %>%
ggplot(aes(y = mean, x = hour)) +
  geom_point(alpha = 0.5) +
  geom_smooth(method = "loess", se = FALSE) +
  stat_summary(aes(y = sd), fun.data = mean_se, geom="ribbon", alpha=0.25)

如果您的数据已经在
hour
级别进行了汇总,您将无法进行汇总。对于ggplot@csgroen,您的数据应该处于融化状态,但它不是按小时级别汇总的,相反。每小时都会故意在数据中出现多次。你的意思是我应该延长时间,比如说包括一个日期吗?哦,对不起,你这里的例子是以小时为单位总结的,所以我假设。我对您的预期输出有点困惑。你想在你的图上每小时有一个点吗?如果是,那么你可以做一个geom_点(或者对许多重叠点做geom_抖动)。geom_平滑的目的是总结数据,所以我不确定你是否达到了你希望生成的正确geom_*。你能描述一下你希望的情节吗?我不知道我是否理解你的问题。如果我添加geom_point(),我每小时会看到两个点。我在评论中解释过,我的主要问题是,
smooth
通过x轴值汇总数据,而我不希望汇总数据,我希望x值重复,因为这是一个时间序列。您的解决方案很好,但却是另一个问题的解决方案。:)不幸的是,我的数据已经设置好了,不是我自己做的,所以我不能更改时间,我不知道日期是什么。但这确实给了我一个想法,即只给出行索引,然后使用
geom\u ribbon
单独添加功能区。非常感谢。