【问题标题】:Multiple graphs with r带有 r 的多个图
【发布时间】:2020-12-29 15:47:21
【问题描述】:

我有两个数据集,它们具有完全相同的列和完全相同的产品,但第一个表包含预测,第二个包含实际销售额。

我想为每个产品创建一个 WoW 折线图,其中一条线表示销售,另一条线以另一种颜色表示 FC。我正在构建一个 rmd html 文件,并且希望在这种情况下在页面上有 4 个图表。 不幸的是,我在现实生活中并不是只有 4 种产品,而且我无法为每种产品编写代码。

有没有办法用简单的代码从这两个表中制作四个(或更多)带有 WoW FC 和销售线的图?

谢谢!

预测:

Product CW1 CW2 CW3 CW4
A 9 12 21 8
B 7 5 6 9
C 10 10 20 15
D 10 9 8 8

实际销售额:

Product CW1 CW2 CW3 CW4
A 10 11 21 7
B 10 5 7 9
C 9 10 21 15
D 10 10 9 8

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    我认为最好逐行绑定两个数据帧(在每个用列标记以声明它所在的原始数据帧之后),然后将它们转换为长格式,以便所有 CW 值都在单列,有一个新列来标记它们来自哪个“CW”。这个新数据框将包含您在ggplot2 中创建简单线图所需的所有信息

    library(ggplot2)
    library(dplyr)
    library(tidyr)
    
    bind_rows(list(sales = sales, forecast = forecast), .id = "type") %>%
      pivot_longer(cols = starts_with("CW")) %>%
      ggplot(aes(name, value, color = type, group = type)) +
      geom_line() +
      scale_color_discrete(name = "") +
      facet_wrap(.~Product, ncol = 2)
    


    数据

    forecast <- structure(list(Product = c("A", "B", "C", "D"), CW1 = c(9L, 7L, 
    10L, 10L), CW2 = c(12L, 5L, 10L, 9L), CW3 = c(21L, 6L, 20L, 8L
    ), CW4 = c(8L, 9L, 15L, 8L)), class = "data.frame", row.names = c(NA, 
    -4L))
    
    sales <- structure(list(Product = c("A", "B", "C", "D"), CW1 = c(10L, 
    10L, 9L, 10L), CW2 = c(11L, 5L, 10L, 10L), CW3 = c(21L, 7L, 21L, 
    9L), CW4 = c(7L, 9L, 15L, 8L)), class = "data.frame", row.names = c(NA, 
    -4L))
    
    forecast
    #>   Product CW1 CW2 CW3 CW4
    #> 1       A   9  12  21   8
    #> 2       B   7   5   6   9
    #> 3       C  10  10  20  15
    #> 4       D  10   9   8   8
    
    sales
    #>   Product CW1 CW2 CW3 CW4
    #> 1       A  10  11  21   7
    #> 2       B  10   5   7   9
    #> 3       C   9  10  21  15
    #> 4       D  10  10   9   8
    

    【讨论】:

    • .id 参数到bind_rows 简化了原始数据帧的识别
    • @RichardTelford 谢谢。我不知道那个参数。这很有用。
    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多