0

我有两个数据集,d1d2csv 文件中。每个数据有 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

我需要AX-axisB中绘制图表Y-axis。该initi值将代表每个图表。换句话说,它将在传说中。对于d1,我需要在A和之间绘制结果B。因为d2我想绘制两个图,其中第一个图是initi = 1,第二个是initi = 2。和的所有图形都在d1d2之间AB并在图形中组合。在这种情况下,总共 3 条线组合在一张图中。在添加列之前d1,我设法绘制了图表。现在我在挣扎。下面是我的代码:d2initi

 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”的每个值

4

2 回答 2

0
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)+
ggtitle("DATA1 vs DATA2") 
print(graph_AB)

我刚刚从原始问题中删除了 geom_line !

于 2013-02-20T18:28:45.560 回答
0

你说你想要两张图,一张是什么时候initi是 1,另一个是什么时候是 2,但它的值也是 0.005。如果要省略0.005级别,则需要先对数据进行子集化。

在 ggplot2 中,多个图被称为“构面”,由于你的构面依赖于一个变量,你想要的命令是facet_wrap(). (facet_grid如果你的方面取决于 2 个变量,你会使用。)方面应该是因素,所以我们会确保initi是一个因素

reshaped_data$initi <- factor(reshaped_data$initi)

然后只需添加+ facet_wrap(~ initi)到您的 ggplot 中。

编辑:如果您只想要一张图表,请尝试

graph_AB<-ggplot(reshaped_data,aes(x = A, y = B, colour = initi, group = L1)) +  
    geom_point(size = 5)+
    geom_line() +
    ggtitle("DATA1 vs DATA2")

graph_AB

将来,使用dput. 例如,如果您这样做dput(reshaped_data)并将其粘贴到您的问题中,输出将是这样的:

    structure(list(initi = c(0.005, 0.005, 0.005, 1, 1, 1, 2, 2, 
2), A = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), B = c(23.7, 31.2, 
35.8, 6.2, 10.1, 11.2, 14.2, 15.9, 16), C = c(1, 2, 3.1, 1, 2, 
3, 8, 7, 6.2), D = c(1, 2.1, 3.2, 1, 2.1, 3.5, 14.3, 13, 12.4
), E = c(24.7, 31.2, 35.6, 6.2, 7, 7, 5.2, 5.5, 5.8), L1 = structure(c(2L, 
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("d1", "d2"), class = "factor")), .Names = c("initi", 
"A", "B", "C", "D", "E", "L1"), class = "data.frame", row.names = c(NA, 
-9L))

任何人都可以粘贴到 R 中并轻松使用。

于 2013-02-19T19:41:05.957 回答