【发布时间】:2013-02-04 14:58:26
【问题描述】:
我在 csv 文件中有两个数据集,d1 和 d2。每个数据有 6 列。我设法通过melt 命令将它们组合在一起,并在ggplot 中将它们组合在一起。在我添加了一个额外的列之后,该列是图表所依赖的另一个变量,我无法获得所需的图表。提供数据集示例和我的代码。
数据集之后使用melt和reshape包:
initi A B C D E L1
0.005 1 23.7 1.0 1.0 24.7 d2
0.005 2 31.2 2.0 2.1 31.2 d2
0.005 3 35.8 3.1 3.2 35.6 d2
1 1 6.2 1.0 1.0 6.2 d1
1 2 10.1 2.0 2.1 7.0 d1
1 3 11.2 3.0 3.5 7.0 d1
2 1 14.2 8.0 14.3 5.2 d1
2 2 15.9 7.0 13.0 5.5 d1
2 3 16.0 6.2 12.4 5.8 d1
我需要在X-axis 中绘制A,在Y-axis 中绘制B。 initi 值将代表每个图表。换句话说,它将在传说中。对于d1,我需要在A 和B 之间绘制结果。对于d2,我想绘制两个图表,其中第一个图表是initi = 1,第二个图表是initi = 2。 d1 和 d2 的所有图表都在 A 和 B 之间,并在图表中合并。在这种情况下,总共 3 条线组合在一张图中。
在添加initi 列之前,我设法绘制了d1 和d2。现在我在挣扎。以下是我的代码:
dlist <- list(d1 =data1 ,d2 = data2)
reshaped_data <- melt(dlist, id.vars = c('initi','A','B','C','D','E'))
graph_AB<-ggplot(reshaped_data,aes(x = A, y = B, colour = initi)) +
geom_point(size = 5)+
geom_line() +
ggtitle("DATA1 vs DATA2")
上面的代码很接近我想要的......除了线路以奇怪的方式连接。我应该将“initi”的每个模式作为一行。加上图例没有显示'init'的每个值
【问题讨论】:
-
我不太确定这是否是您想要的。所以,我会在评论中写在这里,看看它是否是在我写答案之前:这有效吗?
ggplot(data = df, aes(x = A, y = B, colour=factor(initi))) + geom_point() + geom_line() + facet_grid( . ~ L1) -
是的,它做了一些接近我想要的东西。它产生了两个相邻的图表。对于 d1,它生成了一个仅包含 d1 结果的图表(A VS B)。在图 2 中,d2 结果!!!?一个标题和一个图例下的两个图表???我想把它们结合起来??
-
对不起,我不太明白...您能否再次解释一下(通过编辑您的帖子您想要绘制的内容)?
-
对于
d2,您显示的数据中根本没有initi=1。 -
您要基于
L1或initi进行分面吗?不太清楚.. 你是什么意思initi正在改变?