在R中使用matplot - 想要使用CSV数据创建绘图

时间:2014-12-11 14:47:57

标签: r graph plot

我有12种治疗方法,每种方法都有10次测量,我想根据时间进行测量。

我的CVS文件看起来像这样(只有几行,总行数是480​​,观察到48个)

- block observations      soil      oil days weight
- 1       1            1 untreated  untreated    1    205
- 2       1            1 untreated  untreated    2    200
- 3       1            1 untreated  untreated    3    160
- 4       1            1 untreated  untreated    4    120
- 5       1            1 untreated  untreated    5     90
- 6       1            1 untreated  untreated    6     50
- 7       1            1 untreated  untreated    7     40
- 8       1            1 untreated  untreated    8     35
- 9       1            1 untreated  untreated    9     30
- 10      1            1 untreated  untreated   10     15

我的R代码如下所示:

matplot(matrix(weightData$weight, 10, 15), type="l",col=rep(c(1,4), each=10), lwd=2,lty=rep(c(1,2), each=10),xlab="Days", ylab="Weights", cex.lab=1.4)

有没有办法让12条线有不同的颜色?

我也不确定我的传奇......我从课程教程中复制代码并尝试使用我自己的数据进行调整,但它并没有正确显示。

legend(legend = colnames 1,10,c("Untreated-Untreated", "Untreated-Metals", "Untreated-Metalsx2" etc etc...),lty=c(2,5), col=c(4,1))

输出看起来已经到了那里,但我仍然不确定如何修复我的代码以使其正确显示。

http://i.imgur.com/oaap6hE.png

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你真的需要matplot吗?你试过ggplot2吗?这就是我的建议。

1)首先安装ggplot2用于绘图,reshape2用于处理数据框:

install.packages(c('ggplot2','reshape2'))
library(ggplot2)
library(reshape2)

2)现在我们“融化”你的CSV数据帧。我无法理解您的 id变量是什么,但我认为它的所有变量都是如此:阻止观察土壤< / em>,石油。 我们将其放置为id.vars。剩下的(权重)将是measure.vars(有关融化文档的更多信息类型?melt)。

mdf <- melt(mdf, id.vars=c("block", "observations", "soil", "oil", "days"), value.name="Weight")

3)最后我们使用ggplot2绘图。这是一个非常简单的示例,观察采用颜色:

ggplot(data=mdf, aes(x=days, y=Weight, group = variable, colour = observations)) +
    geom_line()

希望它有所帮助!