首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为timeseries数据中的不同日期添加多个vline

为timeseries数据中的不同日期添加多个vline
EN

Stack Overflow用户
提问于 2019-05-24 16:38:16
回答 1查看 755关注 0票数 1

我正在尝试绘制一个包含多个时间序列数据的折线图,其中每条线都显示了特定对象在同一开始日期和结束日期内一段时间内的销售趋势。我的数据集已经是一种“融化”的形式,看起来像这样:

代码语言:javascript
运行
AI代码解释
复制
'data.frame':   468 obs. of  3 variables:
 $ date                : Date, format: "2019-04-11" "2019-04-12" "2019-04-13" ...
 $ Object                : chr  "Object1" "Object2" "Object3" "Object 4" ...
 $ daily_sales: int  1 257 178 177 255 240 231 214 193 174 ...

我有一组需要竖线的日期,它们存储在日期数组imp.dates

当我尝试绘制单个vline时,它工作正常(使用以下代码):

代码语言:javascript
运行
AI代码解释
复制
ggplot(df, aes(x=date,
               y=daily_sales,
               colour=Object,
               group=Object)) +
  geom_line() + 
  geom_vline(aes(xintercept=imp.dates[1]),
            linetype=4,
            colour="black")

但是,当我尝试执行多个vlines

代码语言:javascript
运行
AI代码解释
复制
ggplot(df, aes(x=date,
                   y=daily_sales,
                   colour=Object,
                   group=Object)) +
      geom_line() + 
      geom_vline(aes(xintercept=imp.dates),
                linetype=4,
                colour="black")

我得到以下错误:

代码语言:javascript
运行
AI代码解释
复制
Error: Aesthetics must be either length 1 or the same as the data (40): xintercept

下面这些帖子我都没看过: 1. Multiple vlines in plot gives error, ggplot2 2. ggplot2: how to add text to multiple vertical lines (geom_vlines) on a time x-axis? 3. How to get a vertical geom_vline to an x-axis of class date?

3非常接近,但是我的x变量是Date类,而不是int类,所以似乎不能让它工作。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-24 16:56:49

您需要将imp.dates放入数据框中,并更改geom_vline()图层的数据。

以下是一些示例数据:

代码语言:javascript
运行
AI代码解释
复制
set.seed(2867)
df <- expand.grid(date = seq(as.Date("2019-01-01"), as.Date("2019-12-31"), by = 1L),
                  object = paste0("object", 1:4))
df <- transform(df, daily_sales = rpois(nrow(df), lambda = 100))

set.seed(1)
imp <- data.frame(date = sample(unique(df$date), 4))

在这里,我从这个系列中随机选择了4个日期作为重要日期,你可以这样做:

代码语言:javascript
运行
AI代码解释
复制
imp <- data.frame(date = imp.dates)

让第二个数据帧使用相同的变量名date是有帮助的,但我不认为这是必要的,只是有助于/更容易在你的头脑中解析。

现在,我们按照您的方式构建图(注意,我在代码中将Object更改为object )

代码语言:javascript
运行
AI代码解释
复制
ggplot(df, aes(x = date, y = daily_sales, colour = object, group = object)) +
  geom_line() + 
  geom_vline(data = imp,               ## 1
             aes(xintercept = date),   ## 2
             linetype = 4, colour = "black")

请注意,在添加geom_vline()层的##1行中,我们将该层的data参数设置为重要日期的数据帧imp。在## 2行中,我们指定imp中包含我们想要绘制的日期的变量的名称。其余的绘图代码与您原来的一样。

这会产生(乱七八糟的,它是随机数据):

但是现在它包含了4个用垂直线表示的选定的重要日期。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56296535

复制
相关文章
osip2添加多个不同类型body[通俗易懂]
最近接到任务,要写一个SIP协议转换的服务器。但个人对SIP了解非常少,幸好学长写有一个类似的东西,于是向学长请教。但是由于个人悟性问题(微笑),我除了知道了用了osip和exosip这个库之外,其他一无所知。于是回实验室开始看源码+网上查资料,发现了一个问题:目前学长的程序还有网上的资料千篇一律全是只添加了一个body(即SDP部分),但是根据实际,我需要添加两个body(SDP和XML),但网上的资料和手里的程序没有任何地方提到了添加第二个body的方法,并且第二个body还是xml格式的更没人提到了。
全栈程序员站长
2022/09/07
1.1K0
osip2添加多个不同类型body[通俗易懂]
Nginx为多个不同的静态资源配置不同的二级域名
有多个域名: dog.aimiter.com cat .aimiter.com … 需要映射到不同的静态资源目录: /var/www/html/dog /var/www/html/cat
Spaceack
2020/11/04
2.8K0
Nginx为多个不同的静态资源配置不同的二级域名
git 修改commit日期为之前的日期
我在之前修改了一个文件,但是没有commit,现在我想要commit,日期为那天的日期 git 修改日期的方法很简单,因为有一个命令--date 可以设置 git 提交时间。 默认的 git 的提交时间会受到系统的时间的影响,如果想要系统的时间不会影响到 git 的提交时间,请使用本文的方式,自己指定提交的时间
林德熙
2022/08/04
2.7K0
git 修改commit日期为之前的日期
我在之前修改了一个文件,但是没有commit,现在我想要commit,日期为那天的日期 git 修改日期的方法很简单,因为有一个命令--date 可以设置 git 提交时间。
林德熙
2018/09/19
3.4K0
Android中为Fragment添加Menu的方法
右键res文件夹,选择New -> Android resource file
飞奔去旅行
2019/06/13
1.6K0
Android中为Fragment添加Menu的方法
Recoverit为不同的数据丢失情况分别制定了不同的数据恢复方式
但误删文件也是一项难以避免的事情,遇到这种情况最好的办法就是进行数据恢复,市面上有不少数据恢复软件,今天就推荐一款国产的数据恢复软件。
李才哥
2019/07/10
1.1K0
Recoverit为不同的数据丢失情况分别制定了不同的数据恢复方式
【WebGL】一次drawcall中绘制多个不同纹理的图形
Demo: http://kenkozheng.github.io/WebGL/multi-texture-in-one-drawcall/index.html
用户1258909
2020/07/27
1.8K0
git为不同的项目设置不同的邮箱
在我们使用Git开发项目的时候,可能经常会碰到个人和公司开发的项目都在一台机器上的情况。不管你们有没有,反正我是碰到了。因为公司有公司自己分配的邮箱,而我自己喜欢用自己的邮箱开发自己的项目。这样可能会导致邮箱混用的情况。
魔王卷子
2019/05/31
1.4K0
iOS开发中为NSNull的分类添加“属性”
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/79101320
用户1451823
2018/09/13
8570
一日一技:在 MongoDB 中,如何批量更新不同数据为不同值?
我们知道,当使用 Pymongo 更新MongoDB 字段的时候,我们有两种常见的方法:
青南
2021/06/23
5K0
Java中的replaceAll()方法同时替换多个不同的字符串
需求场景 场景一 String str1 = "广东省,福建省,北京市,海淀区,河北省,上海市,...."; 需要把“省”、“市”、“区”一起去掉; 变成: 广东,福建,北京,海淀,河北,上海....
崔笑颜
2020/06/08
12.1K0
为你的数据添加置信区间
在数据可视化时,除了展示数据的某个具体指,其置信区间也具有非常重要的参考意义,下图是一个典型的线性回归的拟合结果
生信修炼手册
2020/08/20
1.1K0
为 Redis 添加 JSON 数据类型
1. 简介 Redis 本身有比较丰富的数据类型,例如 String、Hash、Set、List JSON 是我们常用的数据类型,当我们需要在 Redis 中保存 json 数据时是怎么存放的呢? 一般是用 String 或者 Hash,但还是不太方便,无法灵活的操作 json 数据 在 Redis 4.0 中,有一个重大改进:modules 模块系统,可以让我们开发新的功能,集成到 redis 中 rejson 就是一个新的模块,为 redis 提供了 json 存储能力 2. 示例 2.1)基础操作
dys
2018/04/04
13.1K0
spark使用zipWithIndex和zipWithUniqueId为rdd中每条数据添加索引数据
spark的rdd中数据需要添加自增主键,然后将数据存入数据库,使用map来添加有的情况是可以的,有的情况是不可以的,所以需要使用以下两种中的其中一种来进行添加。 zipWithIndex def zipWithIndex(): RDD[(T, Long)] 该函数将RDD中的元素和这个元素在RDD中的ID(索引号)组合成键/值对。 scala> var rdd2 = sc.makeRDD(Seq("A","B","R","D","F"),2) rdd2: org.apache.spark.rdd.RDD[
闵开慧
2018/03/30
4.8K0
为mongodb数据库添加用户
像mysql一样有root用户, mongodb初始是没有用户的, 这样很不安全, 所以要为leanote数据库新建一个用户来连接leanote数据库(注意, 并不是为leanote的表users里新建用户, 而是新建一个连接leanote数据库的用户, 类似mysql的root用户).
青阳
2021/09/02
3.3K1
低代码平台amis学习 四:一个表单添加多个按钮,不同按钮触发不同请求
当给表单上不同按钮都配置网络请求时,也需要用到api参数,不过需要把它配置到对应的按钮上,如下
冰霜
2023/02/24
2.1K0
低代码平台amis学习 四:一个表单添加多个按钮,不同按钮触发不同请求
为WordPress 文章中的链接自动添加 nofollow标签
nofollow 标签是神马东东在这里不多说,请自行谷歌。默认的话,WordPress是不会为你的文章的链接添加rel="nofollow"的。如果你需要这么做的话,不必一个个手动添加,直接在主题的funtions .php文件那里加入以下代码就可以自动实现了。 add_filter('the_content', 'auto_nofollow'); function auto_nofollow($content) { //return stripslashes(wp_rel_nofollow($conten
Jeff
2018/01/19
1.5K0
添加多个用户的shell脚本
#!/bin/bash #批量添加N个用户,user01-userN ##版本:v0.1 #检查是否有mkpasswd命令 #如果没有该命令多需要安装expect包 if ! which mkpasswd &>/dev/null then echo"没有mkpasswd命令,安装该命令: " yum install -y expect fi #判断/data/user_passwd文件是否已经存在 #若存在,应该先删除 [ -f /data/user_passw
wo.
2021/06/15
1K0
为matplotlib设置不同的主题
所谓主题,其实就是一套样式规则,对背景色,坐标轴,标题等图形基本元素的样式进行设定。R语言的ggplot2中,通过theme来指定图片主题,既可以采用系统自带的主题,也可以自定义其中的各个元素。
生信修炼手册
2020/09/04
2K0
为matplotlib设置不同的主题
点击加载更多

相似问题

在对ID进行筛选后添加事件日期的geom_vline为每个ID添加vline

14

如何在TimeSeries中添加日期

12

在Postgresql中的timeseries数据中添加缺少的每月日期

212

每个面具有不同vline的geom_vline

10

Bokeh TimeSeries工具提示日期显示为:?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档