【问题标题】:R: keeping axis labels and scales when plotting multiple graphsR:绘制多个图形时保持轴标签和比例
【发布时间】:2020-05-04 14:38:15
【问题描述】:

我正在使用以下公式将 5 个图表一起绘制:

my_data <- as.data.frame(datasets::volcano)

layout(matrix(c(1,2,3,4,5,6), 3, 2, byrow = TRUE))
par(mar=c(1,1,1,1))
plot(my_data$V1, my_data$V2)
plot(my_data$V3, my_data$V4)
plot(my_data$V5, my_data$V6)
plot(my_data$V7, my_data$V8)
plot(my_data$V9, my_data$V10)
plot.new()

效果很好,但我放松了第 1、3 和第 5 个图的 y 轴和后者的 x 轴的比例。在我 dev.off() 之前,我将来所做的任何事情都会发生这种情况。

谢谢!

【问题讨论】:

  • 增加边距,例如par(mar=c(4,4,1,1))
  • @tpetzoldt 是的,谢谢。你知道par(mar)使用后如何重置吗?
  • 这被描述为par帮助页面上的第一个示例。

标签: r plot axes


【解决方案1】:

您可以使用par(mfrow = c(3, 2)) 并调整您的边距。您可能需要增加窗口的大小以适应绘图

my_data <- as.data.frame(datasets::volcano)
par(mfrow = c(3, 2))
par(mar = c(2, 2, 2, 2))
plot(my_data$V1, my_data$V2)
plot(my_data$V3, my_data$V4)
plot(my_data$V5, my_data$V6)
plot(my_data$V7, my_data$V8)
plot(my_data$V9, my_data$V10)

【讨论】:

  • 谢谢!不幸的是,对于我的实际数据集,我得到了Error in plot.new() : figure margins too large。你知道怎么装吗?
  • 您使用 RStudio 吗?如果是,请用鼠标增加绘图区域。
  • 知道了,谢谢。我实际上并不清楚 par(mar) 是如何工作的,但现在明白了。
【解决方案2】:

除了@AllanCameron 的解决方案——我会记住layout,因为它非常有用!此外,您可能希望将 RStudio“绘图”窗口视为预览工具。使用pdfpng 更好地保存您的绘图,如下所示;该图将保存在您的getwd() 中。此外,您可以通过创建一个可以被sapply 循环的sub.cols 数据框来避免重复的plot 调用。

my_data <- as.data.frame(datasets::volcano)
sub.cols <- as.data.frame(matrix(1:10, 2))

png("myPlot01.png", width=400, height=600)
layout(matrix(1:6, 3, 2, byrow=TRUE))
op <- par(mar=c(4.5, 2.5, 1.5, 1.5))  ## set par and store old par
sapply(sub.cols, function(i) plot(my_data[i]))
plot.new()
par(op)  ## restore old par
dev.off()

如果弄脏的控制台让您烦恼,您可以在上面执行invisible(sapply(.))

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2021-08-12
    相关资源
    最近更新 更多