使用字符串名称从循环绘制多个图形

时间:2017-08-26 21:13:41

标签: r string loops stringr

我正在使用大型数据集,我想绘制几个图。我的数据看起来像这样

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的相同情节。

到目前为止,我已尝试在此herehere的帮助下拆分会话字符串,但我不知道分割信息的最有效方法是什么因为我最终想要提出一个循环不同参数的情节,例如已完成here(因为我说我有一个包含许多参数的大数据集)。

1 个答案:

答案 0 :(得分:1)

使用myfun将您的矢量转换为data.frame。他们需要包purrrdplyr

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"))