我在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
我需要在A
和X-axis
B
中对Y-axis
进行图表制作。 initi
值将代表每个图表。换句话说,它将在传奇中。对于d1
,我需要在A
和B
之间绘制结果。对于d2
,我想绘制两个图表,其中initi = 1
的第一个图表和initi = 2
的第二个图表。 d1
和d2
的所有图表都在A
和B
之间,并在图表中合并。在这种情况下总共3行组合在一个图中。
在添加d1
列之前,我设法绘制了d2
和initi
图表。现在我挣扎着。以下是我的代码:
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”的每个模式作为一行。另外,图例没有显示'initi'的每个值
答案 0 :(得分:0)
你说你想要两张图,一张是initi
是1,另一张是2,但它也是值0.005。如果要省略0.005
级别,则需要先对数据进行子集化。
在ggplot2中,多个图形称为“facet”,由于您的facet依赖于一个变量,因此您需要的命令为facet_wrap()
。 (如果你的方面取决于2个变量,你可以使用facet_grid
。)方面应该是因素,所以我们要确保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中并轻松使用。
答案 1 :(得分: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!