【问题标题】:Plot many data sets (from csv) on single graph在单个图上绘制许多数据集(来自 csv)
【发布时间】:2012-12-19 06:58:34
【问题描述】:

按照这个例子:

http://wiki.stdout.org/rcookbook/Graphs/Multiple%20graphs%20on%20one%20page%20(ggplot2)/

查看标题为“每种饮食的拟合生长曲线”的图表,我想做同样的事情,但使用 CSV 文件中的一组数据,例如(值以 µs 为单位,“N”列除外):

$ head RandomArray25PercentDup.csv 
N   SystemSort  QuickSort   RandomizedQuickSort TopDownMergeSort    BottomUpMergeSort   SelectionSort   InsertionSort   BubbleSort  
4   0   1   0   1   0   1   0   0   
5   0   0   0   1   1   0   1   0   
6   0   0   0   1   1   0   0   0   
7   0   0   0   0   1   0   0   0   
8   0   0   1   0   1   0   1   1   

...

到目前为止我已经尝试过了:

library(ggplot2)
library(reshape2)

data <- read.table("RandomArray25PercentDup.csv",
                   sep="\t",
                   header=TRUE)
data.m <- melt(data, id.vars = 1)

ggplot(data.m, aes(data, value, colour=variable)) +
    geom_point(alpha=.3) +
    geom_smooth(alpha=.2, size=1) +
    ggtitle("Random array with ~25% duplicate values")

我在 R 方面的背景非常有限,我正在尝试使用各种资源进行学习。

我有大约 800,000 行数据,每个 N 的测量重复 20 次(这就是为什么我希望通过每个算法的拟合曲线看到散布透明的原因)。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    替换这个

    data.m <- melt(data, id.vars = 1)
    

    data.m <- melt(data, id.vars = "N")
    

    然后

    ggplot(data.m, aes(data, value, colour=variable)) +
        geom_point(alpha=.3) +
        geom_smooth(alpha=.2, size=1) +
        ggtitle("Random array with ~25% duplicate values")
    

    ggplot(data.m, aes(N, value, colour=variable)) +
        geom_point(alpha=.3) +
        geom_smooth(alpha=.2, size=1) +
        ggtitle("Random array with ~25% duplicate values")
    

    应该可以解决问题。第一次替换并不是真正必要的,但如果列的顺序发生变化,最好使用变量名。 aes 中的第一个参数映射到 x 轴。 data 不是列,因此无法映射。

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 2014-03-06
      • 1970-01-01
      • 2019-08-20
      相关资源
      最近更新 更多