【问题标题】:How to define fixed aspect-ratio for (base R) scatter-plot如何为(基本 R)散点图定义固定纵横比
【发布时间】:2012-01-01 14:26:45
【问题描述】:

我正在绘制在来自两个群体的每个个体中测量的两种同位素的相关系数(值 = 0.0:1.0)。我想为我的散点图设置一个固定的纵横比,这样无论图形设备如何,x 轴和 y 轴的大小都完全相同。有什么建议吗?

这是我在 R 中的第一个情节,感谢任何对我的代码进行改进的 cmets?最后,是否值得投资学习基本的绘图技术,还是应该直接跳到 ggplot2 或 lattice?

我的剧情脚本:

## Create dataset
WW_corr <-
structure(list(South_N15 = c(0.7976495, 0.1796725, 0.5338347,
0.4103769, 0.7447027, 0.5080296, 0.7566544, 0.7432026, 0.8927161
), South_C13 = c(0.76706752, 0.02320767, 0.88429902, 0.36648357,
0.73840937, 0.0523504, 0.52145159, 0.50707858, 0.51874445), North_N15 = c(0.7483608,
0.4294148, 0.9283554, 0.8831571, 0.5056481, 0.1945943, 0.8492716,
0.5759033, 0.7483608), North_C13 = c(0.08114805, 0.47268136,
0.94975596, 0.06023815, 0.33652839, 0.53055943, 0.30228833, 0.8864435,
0.08114805)), .Names = c("South_N15", "South_C13", "North_N15",
"North_C13"), row.names = c(NA, -9L), class = "data.frame")

opar <- par()

## Plot results
par(oma = c(1, 0, 0, 0), mar = c(4, 5, 2, 2))           
plot(1,1,xlim=c(0:1.0), ylim=c(0:1.0), type="n", las=1, bty="n", main = NULL,
     ylab=expression(paste("Correlation Coefficient (r) for ", delta ^{15},"N ",
                     "\u0028","\u2030","\u0029")),
     xlab=expression(paste("Correlation Coefficient (r) for ", delta ^{13},"C ",
                     "\u0028","\u2030","\u0029")))

points(WW_corr$South_N15, WW_corr$South_C13, pch = 23, cex = 1.25, 
       bg ="antiquewhite4", col = "antiquewhite4")
points(WW_corr$North_N15, WW_corr$North_C13, pch = 15, cex = 1.25,
       bg ="black")
axis(1, at = seq(0, 1.0, by = 0.1), labels = F, tick = TRUE, tck = -0.01)
axis(2, at = seq(0, 1.0, by = 0.1), labels = F, tick = TRUE, tck = -0.01)
abline(h=.86, v=.86, col = "gray60", lty = 2)
legend("topleft", c("North", "South"), pch = c(15, 23), 
       col = c("black", "antiquewhite4"), pt.bg = c("black", "antiquewhite4"),
       horiz=TRUE, bty = "n")

par(opar)

【问题讨论】:

  • 是的,照我说的做,不要照我做的:-),学习ggplot
  • 你显然已经很好地掌握了基本图形的基础知识,所以我建议至少对 ggplot2/lattice 有所了解,因为考虑到这个问题的质量,它不会是一个巨大的问题为您投资时间。它们完全不同,但您会很快掌握它们。一旦您了解了每种语法的一般语法+流程,您就可以决定要花大部分时间在哪个语法上。但是对每种语法有基本的了解是非常值得的。
  • 希望看到最终情节的图片!

标签: r aspect-ratio scatter-plot


【解决方案1】:
par(pty="s")
plot(...)

将绘图类型设置为方形,这将在您的情况下完成工作(我认为),因为您的 x 和 y 范围是相同的。 ?par 中记录的相当隐蔽的选项。

【讨论】:

    【解决方案2】:

    使用asp=1 作为参数来绘图将被低级 plot.window 调用解释,并且应该给你一个单一的纵横比。使用 ylim 和 xlim 的调用可能与纵横比规范冲突,asp 应该“占上风”。这是一个非常令人印象深刻的第一个 R 图,顺便说一句。和一个优秀的问题结构。高分。

    一个不和谐的注意事项是你使用了xlim=c(0:1.0)这个结构。因为 xlim 需要一个二元向量,所以我会预期 xlim=c(0,1)。如果您更改为一组不同的限制,则击键次数更少,将来出错的可能性也更少,因为如果您尝试使用“0:2.5”,“:”运算符会给您带来意想不到的结果。

    【讨论】:

    • 谢谢!是的,我在使用冒号和逗号的 x- 和 ylim 上的错误。我想我很幸运我使用的是 0 到 1 而不是 0 到 2.5。我仍然有点不清楚使用 asp = 1 与 asp = TRUE 之间的区别。
    • TRUE == 1,所以没有区别。但是你可以使用除 1 之外的其他纵横比。
    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2013-07-07
    相关资源
    最近更新 更多