R中的折线图,每个数据点的数据集最小和最大

时间:2013-07-04 16:01:19

标签: r

我想使用R来绘制函数f的运行时结果。在x轴上的每个数据点,我运行模拟10次,我有3个单独的行。在每个数据点,我还想包括显示最高和最低运行时间的垂直线的范围,而数据线则通过每组10个结果的平均值的点。

为了让自己更清楚,我嘲笑了一个我想描述的情节: An example of desired plot with min/max/mean

我不熟悉R,因此我不确定如何保存我的数据集。这就是我的数据可能与底部的实线相似:

------------------------------------------
|       | Runs for solid line            |
------------------------------------------
| Input | 1   |  2  |  3   |  4   |  5   |
------------------------------------------
| 2000  | 0.6 | 0.7 | 0.75 | 0.51 | 0.6  |
| 4000  | 0.9 | 1.0 | 1.1  | 0.8  | 0.7  |
| 6000  | 1.4 | 1.3 | 1.5  | 1.43 | 1.56 |
------------------------------------------

我可以想象另外两个表:一个用于虚线,一个用于不规则的虚线。对于上表,我想在2000处的垂直线表示max = 0.75,min = 0.6,实线表示平均值0.632。对于规则和不规则的虚线也一样。

1 个答案:

答案 0 :(得分:3)

我建议阅读R的介绍。

您的数据:

DF <- read.table(text="Input  1     2    3     4     5   
 2000   0.6  0.7  0.75  0.51  0.6  
 4000   0.9  1.0  1.1   0.8   0.7  
 6000   1.4  1.3  1.5   1.43  1.56",header=TRUE)

让我们将其重塑为更合理的格式(长格式):

library(reshape2)
DF <- melt(DF,id="Input")

为该行添加ID:

DF$group <- "a"

第二行:

DF2 <- DF
DF2$value <- DF2$value+1
DF2$group <- "b"

将所有数据放在一个data.frame中:

DF <- rbind(DF,DF2)

现在我们可以策划。绘图的可能性很多。这是一个包括计算您想要绘制的摘要统计数据的文件:

library(ggplot2)

ggplot(DF,aes(x=Input,y=value,group=group)) + 
  stat_summary(fun.y="mean",geom="line",aes(linetype=group)) +
  stat_summary(fun.ymin="min",fun.ymax="max",geom="errorbar")

enter image description here