我正在尝试使用ggplot2绘制多行。我的数据适用于数据框,如下所示:
> rs
time 1 2 3 4
1 200 17230622635 17280401147 17296993985 17313586822
2 400 22328386154 22456712709 22499488227 22542263745
3 600 28958840968 29186097622 29261849840 29337602058
4 800 40251281810 40650094691 40783032318 40915969945
5 1000 73705771414 74612829244 74915181854 75217534464
我想用"时间"列为x值。其他列是不同行中的y的y值。在上面的数据中,有4行,每行包含5个点。更具体地说,第一行有点(200,17230622635),(400,22328386154),(600,28558840968)等。第二行有点(200,17280401147),(400,22456712709)等(如果你需要进一步解释数据格式,最后参见PS。)
要生成类似的数据,您可以使用以下代码:
rs = data.frame(seq(200, 1000, by=200), runif(5), runif(5), runif(5))
names(rs)=c("time", 1:3)
我在堆栈溢出时遵循了一些示例,并尝试使用reshape2和ggplot2来执行此绘图:
我首先将数据融合为长格式":
library('reshape2')
library('ggplot2')
melted = melt(rs, id.vars="time")
然后使用以下标准绘制数据:
ggplot() + geom_line(data=melted, aes(x="time", y="value", group="variable"))
但是,我得到了一个没有点也没有线的空图。
任何人都可以帮我看看我的手术有什么问题吗?
P.S。
关于数据格式:
你可以想象班上有很多学生,我们有几个小组的测验。每行包含一个学生的数据:第一列是测验编号,其余列是他/她的分数。对于每个学生,我们想要绘制一条线来反映他/她的分数如何在不同的测验中变化,每个点是某个学生的一个测验的分数。由于有多个学生,我们想画多行。
关于融化数据:
具体到我上面显示的数据,我从melt()
函数得到的数据是:
> melted
time variable value
1 200 1 17230622635
2 400 1 22328386154
3 600 1 28958840968
4 800 1 40251281810
5 1000 1 73705771414
6 200 2 17280401147
7 400 2 22456712709
8 600 2 29186097622
9 800 2 40650094691
10 1000 2 74612829244
11 200 3 17296993985
12 400 3 22499488227
13 600 3 29261849840
14 800 3 40783032318
15 1000 3 74915181854
16 200 4 17313586822
17 400 4 22542263745
18 600 4 29337602058
19 800 4 40915969945
20 1000 4 75217534464
答案 0 :(得分:20)
答案 1 :(得分:2)
另一种选择是使用aes_string。
P.S。为什么我不能将此作为评论?是我的浏览器还是这个网站很难?