代码之家  ›  专栏  ›  技术社区  ›  gaut

具有ggplot线和堆叠条形图的数据透视

  •  2
  • gaut  · 技术社区  · 2 年前

    请考虑以下图表:

    library(lubridate)
    library(dplyr)
    col1 <- col2 <- col3 <- c(1:5)
    col4 <- c(11:15)
    date <- as_date("2022-07-27")+0:4
    data <- data.frame(date, col1, col2, col3, col4) %>% pivot_longer(all_of(c("col1", "col2", "col3", "col4")))
    
    p1 <- ggplot(data, aes(fill=name, y=`value`, x=`date`)) +
      geom_bar(position="stack", stat="identity") +
      ylab("MCHF")+
      ggtitle("mytitle")+
      theme(legend.position="bottom",
            legend.key.size = grid::unit(0.1, "inch"),
              legend.key.width = grid::unit(0.1, "inch"))+
      ggplot2::guides(fill=ggplot2::guide_legend(ncol=3))
    p1
    

    plot1

    我怎么能 col4 是否绘制为直线而不是堆叠条形图的一部分?理想情况下,我想把它留在传说中。

    1 回复  |  直到 2 年前
        1
  •  2
  •   Quinten    2 年前

    你可以从你的 pivot_longer 并添加 geom_line 对于您的“col4”,如下所示:

    library(lubridate)
    library(ggplot2)
    library(tidyr)
    library(dplyr)
    
    col1 <- col2 <- col3 <- c(1:5)
    col4 <- c(11:15)
    date <- as_date("2022-07-27")+0:4
    data <- data.frame(date, col1, col2, col3, col4) %>% pivot_longer(all_of(c("col1", "col2", "col3")))
    
    p1 <- ggplot(data, aes(fill=name, y=`value`, x=`date`)) +
      geom_bar(position="stack", stat="identity") +
      geom_line(aes(x = date, y = col4, group = 1, colour = "col4")) +
      ylab("MCHF")+
      ggtitle("mytitle")+
      theme(legend.position="bottom",
            legend.key.size = grid::unit(0.1, "inch"),
            legend.key.width = grid::unit(0.1, "inch"))+
      scale_colour_manual(name= "", values = 1) +
      ggplot2::guides(fill=ggplot2::guide_legend(ncol=3))
    p1
    

    创建于2022-07-27由 reprex package (v2.0.1)