Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_Date_Ggplot2 - Fatal编程技术网

R 如何使用ggplot2向箱线图添加线

R 如何使用ggplot2向箱线图添加线,r,date,ggplot2,R,Date,Ggplot2,我正在尝试用一些预测数据绘制方块图和胡须图。并希望将观察结果作为线条添加到绘图中。我在这里制作了一个数据样本,这样你们就可以理解它的样子了 $forecast试试这个: p<- ggplot(data = forecasts, aes(x=as.factor(Date), y=value)) p<- p + geom_boxplot(aes(fill=f_type)) p <- p + geom_hline(aes(yintercept=12), colour="#9900

我正在尝试用一些预测数据绘制方块图和胡须图。并希望将观察结果作为线条添加到绘图中。我在这里制作了一个数据样本,这样你们就可以理解它的样子了

$forecast试试这个:

p<- ggplot(data = forecasts, aes(x=as.factor(Date), y=value))
p<- p + geom_boxplot(aes(fill=f_type))

p <- p +  geom_hline(aes(yintercept=12), colour="#990000")
p
p
预测
这就是你想要的。您需要将
x
作为一个连续的日期变量(而不是
as.factor
作为您的代码)。这样,x轴的预期数据类型在两个数据集中是相同的。您需要添加
group=
行,以便它知道为每个日期和f_类型创建一个单独的框。那么添加行就很简单了

如果不想
x
成为一个连续的日期,那么使用
as.factor
是正确的,但是您需要将
组添加到
geom_线
中,以便它知道如何连接离散因子上的点

ggplot() + 
  geom_boxplot(data = forecasts,
               aes(x = as.factor(Date), y = value, 
                   group = interaction(Date, f_type), 
                   fill = f_type)) + 
  geom_line(data = observations,
            aes(x = as.factor(Dt), y = obs, group = 1), size = 2)

还要注意,我删除了第二个图形中的
width
选项(这意味着我只使用默认的ggplot值)。您可以使用该值查看数据的最佳外观


最后,在我的两个示例中,我将数据和美学移到了将要使用它们的
geom
语句中。在复杂的图形中,有时很难记住哪些层使用了哪些数据以及哪些美学效果,因此在调试和排除故障时,最好不要在主
ggplot()
调用中添加任何内容。

我不想添加水平线。我想添加一条线,表示我的观察结果。完美。我在找你的第二种方法。非常感谢。有没有办法给这个情节下个定义?我用定义的函数和geom=“boxplot”尝试了stat_summary。虽然这会接受给定的范围定义,但会弄乱组。如何定义?根据文件,胡须延伸至四分位范围的1.5倍,但可使用
coef=
内部
geom\u箱线图进行调整。如果您想让胡须成为其他统计数据,您需要一个函数来传递给
stat\u summary
,就像您尝试的那样,但是您需要包含上面的
aes(…)
,以保持分组正确。谢谢。似乎使用组参数和geom_线解决了这个问题。
ggplot() + 
  geom_boxplot(data = forecasts,
               aes(x = Date, y = value, 
                   group = interaction(Date, f_type), 
                   fill = f_type), 
               width = 10) + 
  geom_line(data = observations,
            aes(x = Dt, y = obs), size = 2)
ggplot() + 
  geom_boxplot(data = forecasts,
               aes(x = as.factor(Date), y = value, 
                   group = interaction(Date, f_type), 
                   fill = f_type)) + 
  geom_line(data = observations,
            aes(x = as.factor(Dt), y = obs, group = 1), size = 2)