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

从具有字符串名称的循环中绘制多个图

  •  0
  • ima  · 技术社区  · 7 年前

    SessionID <- (Results-C1-P11-D0 ,  Results-CP0.9-P11-D0, Results-CP0.95-P11-D0, Results-C1-P22-D0 ,  Results-CP0.9-P22-D0, Results-CP0.95-P22-D0, Results-C1-P22-D2 ,  Results-CP0.9-P22-D2, Results-CP0.95-P22-D2 )
    Costs <- (10, 20, 30, 40, 50, 60, 70, 80, 90) 
    

    实际上,SessionID包含用于计算结果的参数信息,即C是容量,因此C1实际上意味着C=1)。 我想根据这些数据创建图:在X轴上,我想绘制参数C,在y轴上,只绘制P=11和P=22的结果的成本,其中D=0。与D=2的相同曲线图相比。

    here here ,但我不知道最有效的方法是分割SessionID的信息,因为我最终想要绘制一个在不同参数上循环的图,就像这样 here

    1 回复  |  直到 7 年前
        1
  •  1
  •   CPak    7 年前

    使用 myfun 将向量转换为数据。框架他们需要包裹 purrr dplyr

    myfun <- function(S, Costs) {
                  require(purrr)
                  require(dplyr)
                  df <- do.call(rbind.data.frame, strsplit(S, "-")) %>%
                          setNames(c("Results","C","P","D")) %>%
                          cbind(Costs)
                  return(df)
             }
    
    df <- myfun(SessionID, Costs)
    

    输出

      Results      C   P  D Costs
    1 Results     C1 P11 D0    10
    2 Results  CP0.9 P11 D0    20
    3 Results CP0.95 P11 D0    30
    4 Results     C1 P22 D0    40
    5 Results  CP0.9 P22 D0    50
    6 Results CP0.95 P22 D0    60
    7 Results     C1 P22 D2    70
    8 Results  CP0.9 P22 D2    80
    9 Results CP0.95 P22 D2    90
    

    情节

    ggplot2 让您轻松绘制

    library(ggplot2)
    ggplot(data=df, aes(x=C, y=Costs, color=P)) +
     geom_point() +
     facet_wrap(~D) +
     theme_classic()
    

    install.packages(c("ggplot2", "purrr","dplyr"))