【问题标题】:Drawing circles in R在 R 中绘制圆圈
【发布时间】:2012-09-19 02:36:35
【问题描述】:

我正在使用 plotrix 包来绘制圆圈。

我不明白我的代码有什么问题... :-(

我有三点。第一个点(1,1) 应该是圆的中心。以下两点(1,4)(4,1) 到中心的距离/半径相同。 那么剧情中的圆圈应该会经过这些点吧?

我不知道为什么这个圆圈看起来不对。有解释吗?

  p1 <- c(1,1)
  p2 <- c(4,1)
  p3 <- c(1,4)
  r <- sqrt(sum((p1-p2)^2))

  plot(x=c(p1[1], p2[1], p3[1]),
       y=c(p1[2], p2[2], p3[2]), 
       ylim=c(-5,5), xlim=c(-5,5))
  draw.circle(x=p1[1], y=p1[2], radius=(r))
  abline(v=-5:5, col="#0000FF66")
  abline(h=-5:5, col="#0000FF66")

看看生成的输出here

【问题讨论】:

  • ?plot中设置纵横比asp

标签: r plot plotrix


【解决方案1】:

正如@Baptiste 上面所说,您可以使用plot(...,asp=1)。但是,这仅在您的 x 和 y 范围恰好相同时才有效(因为它将绘图的 physical 纵横比设置为 1)。否则,您可能想要使用 MASS 包中的 eqscplot 函数。每当您尝试仔细绘制几何对象时,都会出现类似的问题,例如Drawing non-intersecting circles

此图是通过将上面代码中的plot 替换为MASS::eqscplot 生成的:

请注意,当您在 R 的图形窗口中绘图时,根据 R 对您的显示器配置等的看法,圆圈可能看起来有点挤压(即使它穿过点)——它对我来说是这样的—— - 但在图形输出中应该看起来不错。

【讨论】:

  • 谢谢! MASS eqscplot 函数接近我所需要的。不过,能够定义自己的 xlim 和 ylim 还是不错的。
  • 棘手的部分是您通常需要兼顾 (1) 绘图设备的尺寸(通常用户可调整,但不能在 R 的图形框架内自适应); (2) 绘图区域内图形区域的尺寸(取决于标题、注释等的边距和大小); (3) 用户 x 和 y 限制。小心,你可以按照你想要的方式得到这些,但是自动调整它有点困难......
猜你喜欢
  • 2014-04-11
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多