全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2722 4
2020-05-25

欢迎使用Markdown编辑器

geom_ribbon相关问题

我想利用geom_ribbon做一个图,主要是做两组直线之间的填充
具体数据生成过程如下,

tarrif <- tibble(
  date = c(as.Date("2018-01-01"),as.Date("2018-02-07"),as.Date("2018-03-23"),
           as.Date("2018-04-02"),as.Date("2018-05-01"),as.Date("2018-07-01"),
           as.Date("2018-07-06"),as.Date("2018-08-23"),as.Date("2018-09-24"),
           as.Date("2018-11-01"),as.Date("2019-01-01"),as.Date("2019-02-07"),
           as.Date("2019-06-01"),as.Date("2019-06-15"),as.Date("2019-07-01"),as.Date("2019-09-01"),
           as.Date("2019-09-17"),as.Date("2019-12-26"),as.Date("2020-02-07"),
           as.Date("2020-02-08"),as.Date("2020-02-14"),as.Date("2020-04-30")),
  china = c(8.0,8.0,8.0,8.4,8.3,7.2,10.1,14.4,18.3,18.2,16.5,
            16.5,20.7,20.7,20.7,21.8,21.1,20.9,20.9,20.9,20.3,20.3),
  us = c(3.1,3.2,3.8,3.8,3.8,3.8,6.7,8.2,12.0,12.0,12.0,12.0,12.0,
         17.6,17.6,21.0,21.0,21.0,21.0,21.0,19.3,19.3)
  )


d <- tibble(
  date = seq(as.Date("2018-01-01"),
             as.Date("2020-04-30"),
             by = "1 day")
)

d_tar <- left_join(d,tarrif,by = "date")


d_tar <- fill(d_tar,china,.direction = "down")
d_tar <- fill(d_tar,us,.direction = "down")


d_tar <- mutate(d_tar, 
                pd_china = case_when(date <= as.Date("2018-04-02") ~ "A",
                                     date <= as.Date("2018-05-01") ~ "C",
                                     date <= as.Date("2018-07-01") ~ "D",
                                     date <= as.Date("2018-07-06") ~ "E",
                                     date <= as.Date("2018-08-23") ~ "F",
                                     date <= as.Date("2018-09-24") ~ "G",
                                     date <= as.Date("2018-11-01") ~ "H",
                                     date <= as.Date("2019-01-01") ~ "I",
                                     date <= as.Date("2019-06-01") ~ "K",
                                     date <= as.Date("2019-07-01") ~ "M",
                                     date <= as.Date("2019-09-01") ~ "N",
                                     date <= as.Date("2019-09-17") ~ "O",
                                     date <= as.Date("2019-12-26") ~ "P",
                                     date <= as.Date("2020-02-14") ~ "Q",
                                     date <= as.Date("2020-04-30") ~ "T"),
                pd_us = case_when(date <= as.Date("2018-02-06") ~ "XA",
                                  date <= as.Date("2018-03-22") ~ "XB",
                                  date <= as.Date("2018-07-05") ~ "XC",
                                  date <= as.Date("2018-08-22") ~ "XD",
                                  date <= as.Date("2018-12-31") ~ "XE",
                                  date <= as.Date("2019-06-14") ~ "XF",
                                  date <= as.Date("2019-08-31") ~ "XG",
                                  date <= as.Date("2020-02-13") ~ "XH",
                                  date <= as.Date("2020-04-30") ~ "XI")
)

上述就是数据生成的过程
下面是做图的code


ggplot() + 
  geom_ribbon(data = d_tar,
              aes(date,ymin = us,ymax = china,fill = pd_china)) + 
  geom_ribbon(data = d_tar,
              aes(date,ymin = 0,ymax = us,fill = pd_us)) + 
  geom_line(data = d_tar,
            aes(x = date,y = china),
            size = 1) + 
  geom_line(data = d_tar,
            aes(x = date,y = us),
            size = 1)

结果如下

我的问题是,我的数据里面是没有NA值的,为什么某些日期处是空白的,没有被填充上呢

如答案可解决问题,我 愿意出50论坛币

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-5-25 17:04:53
我不知道用markdown怎么添加图片,
所以我把图片放在这里

附件列表
2.png

原图尺寸 14.99 KB

2.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-5-25 23:01:43
从开始到2018-04-02,pd_China是“A”,从2018-04-03之后,pd_China是“C”,那么2018-04-02到2018-04-03之间,就是空白了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-5-25 23:17:18
cheetahfly 发表于 2020-5-25 23:01
从开始到2018-04-02,pd_China是“A”,从2018-04-03之后,pd_China是“C”,那么2018-04-02到2018-04-03之 ...
该怎么修改呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-5-25 23:17:38
cheetahfly 发表于 2020-5-25 23:01
从开始到2018-04-02,pd_China是“A”,从2018-04-03之后,pd_China是“C”,那么2018-04-02到2018-04-03之 ...
谢谢你的回复
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群