【发布时间】:2016-05-30 11:51:25
【问题描述】:
这是我之前question的一点后续:
这次我想将我的图表导出为 pdf,并且我希望在同一页面上有 6 个图表。为什么是 6,因为我有 6 个不同的数据集:
df1 <- data.frame(matrix(rnorm(50), 10, 15))
df2 <- data.frame(matrix(rnorm(30), 10, 15))
df3 <- data.frame(matrix(rnorm(20), 10, 5))
df4 <- data.frame(matrix(rnorm(70), 10, 5))
df5 <- data.frame(matrix(rnorm(110), 10, 10))
df6 <- data.frame(matrix(rnorm(70), 10, 10))
我更改了 row.names 以使示例数据更类似于真实数据:
row.names(df1) <- c("Mark", "Tere", "Marcus", "Heidi", "Georg", "Tieme", "Joan", "Tytus", "Julius", "Crater")
df1$id <- rownames(df1)
我用于绘图的代码 (ggplot) 需要添加 id 列。
现在,进入正题。因此,如您所见,所有数据集都具有完全相同的row.names,但它们的顺序可能不同!指出我的期望可能更容易理解:
1.我想为每个数据集创建一个单独的图表,但所有数据集(总共 6 个)都应该在同一页面上。
2.每个图表应该有 3 个图(3 行 - 查看我创建的上一个线程)。
3. Heidi 和 Joan 的绘图必须在所有图表上,并且还有一个(再次查看上一个线程)。这意味着该数据中的每个其他名称都应该有一页。
4.如果能使用ggplot 完成将不胜感激。
只是为了更容易理解:
总共 6 个图表。每个图表包含Heidi、Joan + 任何其他(Marcus/Tieme/Georg/Julius/etc)。每个页面的名称不同。
这是我用于将每一行与 2 个常量一起绘制的代码:
pdf(file = sprintf("Df_plots.pdf", df1), paper='A4r')
lapply(1:length(df1$numb), function (i) {
df1_melted.i <- df1_melted[df1_melted$numb %in% c(i, Heidi, Joan),]
ggplot(data_plot2.i) +
geom_line(aes(x = as.numeric(variable), y = value, colour = factor(id)))
})
dev.off()
这听起来很复杂,但对于有 R 经验的人来说应该很容易。
编辑:
df1$numb <- 1:length(row.names(df1))
df1_melted <- melt(df1, id.vars = c("id", "numb))
编辑:
用不同的列数编辑数据。
我想把情节安排成这样。您必须考虑到列数会有所不同 - 更多值。
【问题讨论】:
-
什么是df_plot、tbl_plot、data_melted?
-
稍微编辑了代码。这只是可以使用/编辑的代码示例。