【问题标题】:r plots with unequal length of x and y axesx 轴和 y 轴长度不等的 r 绘图
【发布时间】:2018-04-08 11:07:58
【问题描述】:

我想使用 r 在 x 和 y 轴长度不等的区域中绘制数据点。

具体来说,X 轴上的坐标范围是 -136 到 136,y 轴上的坐标范围是 0 到 420。

我创建一个适合数据的绘图的天真的方法

plot(x=-136:136, y=0:420, type= "n", main="distribution", xlab='xdescr', ylab='ydescr')

失败

Error in xy.coords(x, y, xlabel, ylabel, log) : 
'x' and 'y' lengths differ

(如何)是否可以创建适合此数据的图?创建一个轴长相等的图是不可避免的吗?

编辑:绘制区域本身不能是正方形,因为沿两个轴的值表示相同(距离)

编辑:我尝试了这里建议的解决方案How to get a non-square plot in R?。这不会产生我想要的情节 - 结果被拉伸到错误的方向(横向 Y 而不是纵向 Y)

【问题讨论】:

  • 我认为您正在寻找xlimylim。见?par
  • plot(NULL, xlim=c(-136, 136), ylim = c(0, 420))
  • 谢谢,这行得通。我愚蠢地没有立即意识到显示的情节“回流”了它的窗口

标签: r plot


【解决方案1】:

使用ggplot2,您可以执行以下操作:

library(tidyverse)

tibble() %>% 
  ggplot() +
  geom_point() + 
  ylim(0, 420) +
  xlim(-136, 136) +
  coord_fixed(ratio = 1)

见:http://ggplot2.tidyverse.org/reference/coord_fixed.html

【讨论】:

  • 谢谢!这个 sn-p 中的 data.frame()%>% 行在做什么?
  • Kust 是一个空白数据集,您可以将 data.frame() 替换为您的数据集,然后在 ggplot 中添加 aes(x, y)。如果您通过dput() 向我提供一个可重复的示例,我将很乐意为您绘制它。
  • 啊,我明白了。现在 headpoint 的建议效果很好,但是谢谢
  • i (only) 刚刚注意到这里建议的两种解决方案都使用较高值压缩轴。但这不是数据的意思,1 个单位沿 x 和 y 的长度相同。所以绘制的区域不能是正方形
  • 你是说y轴应该更长,因为它的范围比x轴大吗?绘图的形状只是一种审美偏好,数据仍然会正确绘制。
猜你喜欢
  • 2012-06-08
  • 1970-01-01
  • 2019-06-02
  • 2020-09-30
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
相关资源
最近更新 更多