GGPlot组合/叠加柱形图和折线图(甘特图)

问题描述 投票:0回答:1

我想在包含“建议的播种期”和实际播种日期的甘特图上覆盖降雨数据(列)。从数据集中,我可以分别创建两个图表,但不能在一个图表上创建。任何指针都非常感谢。

https://photos.app.goo.gl/RanEbM62nxE1nrD47

## plot Gantt chart with suggested sowing dates and actual sowing dates
sowdate.df$Element <- factor(sowdate.df$Element,levels=c("SOWING DATE","Dart","Spitfire","Suntop","Beckom","Flanker","Lancer","Sunmax","Kittyhawk"))
ggplot(sowdate.df, aes(Date1, Element, Color=Category, group=Item)) +
  geom_line(size = 10) 

## plot rainfall
ggplot(sowdate.df, aes(Date1, rain)) + geom_col()


## combine Gantt and rainfall
ggplot(sowdate.df) + 
  geom_col(aes(Date1, rain), size = 1, color = "darkblue", fill = "white") +
  geom_line(aes(Date1, Element, Color=Category, group=Item), size = 1.5, color="red", group = 1)



      Item     Element    Category Start-End      Date1 rain
1     1      Beckom     Variety     Start 2018-05-07   NA
2     2        Dart     Variety     Start 2018-06-01   NA
3     3     Flanker     Variety     Start 2018-05-01   NA
4     4   Kittyhawk     Variety     Start 2018-04-01   NA
5     5      Lancer     Variety     Start 2018-05-01   NA
6     6 SOWING DATE Sowing date     Start 2018-06-06   NA
7     7 SOWING DATE Sowing date     Start 2018-06-26   NA
8     8 SOWING DATE Sowing date     Start 2018-07-03   NA
9     9 SOWING DATE Sowing date     Start 2018-07-12   NA
10   10    Spitfire     Variety     Start 2018-05-21   NA
11   11      Sunmax     Variety     Start 2018-04-15   NA
12   12      Suntop     Variety     Start 2018-05-07   NA
13    1      Beckom     Variety       End 2018-05-31   NA
14    2        Dart     Variety       End 2018-06-30   NA
15    3     Flanker     Variety       End 2018-05-21   NA
16    4   Kittyhawk     Variety       End 2018-05-07   NA
17    5      Lancer     Variety       End 2018-05-21   NA
18    6 SOWING DATE Sowing date       End 2018-06-07   NA
19    7 SOWING DATE Sowing date       End 2018-06-27   NA
20    8 SOWING DATE Sowing date       End 2018-07-04   NA
21    9 SOWING DATE Sowing date       End 2018-07-13   NA
22   10    Spitfire     Variety       End 2018-06-21   NA
23   11      Sunmax     Variety       End 2018-05-07   NA
24   12      Suntop     Variety       End 2018-06-07   NA
25   13        <NA>    Rainfall      <NA> 2018-04-14  3.0
26   14        <NA>    Rainfall      <NA> 2018-03-30  7.0
27   15        <NA>    Rainfall      <NA> 2018-06-10  3.5
28   16        <NA>    Rainfall      <NA> 2018-06-18  4.0
29   17        <NA>    Rainfall      <NA> 2018-06-28 13.5
30   18        <NA>    Rainfall      <NA> 2018-07-23  3.0
31   19        <NA>    Rainfall      <NA> 2018-08-05  6.0
32   20        <NA>    Rainfall      <NA> 2018-08-25 23.0
33   21        <NA>    Rainfall      <NA> 2018-09-10  5.0
ggplot2 gantt-chart geom-bar
1个回答
0
投票

尽管仍然缺少期望的输出,但这是一个建议

您使用因子水平作为y值的geom_line的解决方法很有趣,但是我不确定是否如此。

无论如何-这可能是您问题的核心。您正在混合不同的y度量-它们属于不同的类别。一个图的因子水平,另一图的数字/整数。这是有问题的。我不会努力将它们逼入一个y轴,而是宁愿创建两个图并将它们与其中一个包含patchwork的组合图组合。像这样

我已重命名了您的列,正在使用GitHub用户@ alisdaire47的软件包读取数据,并更改了一些列以实现绘图。关键是使用正确的类:日期作为日期,数字作为数字。

首先阅读您的数据:

#devtools::install_github('alistaire47/read.so')
sowdate.df <- read.so::read_so('Item     Element    Category Start_End      Date1 rain
1     1      Beckom     Variety     Start 2018-05-07   NA
2     2        Dart     Variety     Start 2018-06-01   NA
3     3     Flanker     Variety     Start 2018-05-01   NA
4     4   Kittyhawk     Variety     Start 2018-04-01   NA
5     5      Lancer     Variety     Start 2018-05-01   NA
6     6 SOWING DATE Sowing date     Start 2018-06-06   NA
7     7 SOWING DATE Sowing date     Start 2018-06-26   NA
8     8 SOWING DATE Sowing date     Start 2018-07-03   NA
9     9 SOWING DATE Sowing date     Start 2018-07-12   NA
10   10    Spitfire     Variety     Start 2018-05-21   NA
11   11      Sunmax     Variety     Start 2018-04-15   NA
12   12      Suntop     Variety     Start 2018-05-07   NA
13    1      Beckom     Variety       End 2018-05-31   NA
14    2        Dart     Variety       End 2018-06-30   NA
15    3     Flanker     Variety       End 2018-05-21   NA
16    4   Kittyhawk     Variety       End 2018-05-07   NA
17    5      Lancer     Variety       End 2018-05-21   NA
18    6 SOWING DATE Sowing date       End 2018-06-07   NA
19    7 SOWING DATE Sowing date       End 2018-06-27   NA
20    8 SOWING DATE Sowing date       End 2018-07-04   NA
21    9 SOWING DATE Sowing date       End 2018-07-13   NA
22   10    Spitfire     Variety       End 2018-06-21   NA
23   11      Sunmax     Variety       End 2018-05-07   NA
24   12      Suntop     Variety       End 2018-06-07   NA
25   13        <NA>    Rainfall      <NA> 2018-04-14  3.0
26   14        <NA>    Rainfall      <NA> 2018-03-30  7.0
27   15        <NA>    Rainfall      <NA> 2018-06-10  3.5
28   16        <NA>    Rainfall      <NA> 2018-06-18  4.0
29   17        <NA>    Rainfall      <NA> 2018-06-28 13.5
30   18        <NA>    Rainfall      <NA> 2018-07-23  3.0
31   19        <NA>    Rainfall      <NA> 2018-08-05  6.0
32   20        <NA>    Rainfall      <NA> 2018-08-25 23.0
33   21        <NA>    Rainfall      <NA> 2018-09-10  5.0')
#> Warning: 8 parsing failures.
#> row col  expected    actual         file
#>   6  -- 6 columns 8 columns literal data
#>   7  -- 6 columns 8 columns literal data
#>   8  -- 6 columns 8 columns literal data
#>   9  -- 6 columns 8 columns literal data
#>  18  -- 6 columns 8 columns literal data
#> ... ... ......... ......... ............
#> See problems(...) for more details.

现在正在绘图

library(tidyverse)
library(patchwork)

sowdate <- sowdate.df %>% mutate(Element = factor(Element,levels=c("SOWING DATE","Dart","Spitfire","Suntop","Beckom","Flanker","Lancer","Sunmax","Kittyhawk")),
                                 date = as.Date(Date1),
                                 rain = as.numeric(rain))
#> Warning: NAs introduced by coercion

p1 <- ggplot(sowdate, aes(date, Element, Color = Category, group=Item)) +
  geom_line(size = 10) 
p2 <- ggplot(sowdate) +
  geom_col(aes(date, rain)) 
p1 + p2 + plot_layout(nrow = 2)
#> Warning: Removed 8 rows containing missing values (geom_path).
#> Warning: Removed 24 rows containing missing values (position_stack).

“”

您可以从第一个绘图中删除轴标签和标题,以使它们更加靠近。

reprex package(v0.3.0)在2020-01-21创建

© www.soinside.com 2019 - 2024. All rights reserved.