为什么coord_equal没有按照应有的方式工作?

时间:2012-09-16 00:51:37

标签: r ggplot2

根据ggplot2上的reference page,以下命令应该给出x和y的相等宽高比(1:1)。

qplot(mpg, wt, data = mtcars) + coord_equal(ratio = 1) 

但是,当我输入它时,我看到了这一点。 enter image description here

有谁知道这是什么问题?

编辑:

但是,如果没有+coord_equal(),我可以获得1:1的宽高比。但是,只要我在右侧添加图例,1:1方面就会发生变化。提供的建议过于繁琐,无法达到预期效果。正如所建议的那样,我已经向github / ggplot2提交了一张票。

3 个答案:

答案 0 :(得分:8)

不妨将我的评论转化为答案。

coord_equal(ratio = 1)所做的是确保两个轴上相等的长度代表相同的单位变化。所以两个轴的1cm = 5个单位(例如 - 转换率可能不正确,但想法是相同的)。由于x轴变化较大,因此会像这样碾压。如果希望y轴更加拉伸,可以将ylim参数添加到coord_equal

答案 1 :(得分:4)

github / ggplot2票据归档后。温斯顿帮我找到了一个简洁的解决方案:

qplot(mpg,wt,data=mtcars, shape="carb") + theme(aspect.ratio=1)

此外,ggplot2 0.8到0.9之间似乎存在一些行为变化,原始文档可能已过时。

答案 2 :(得分:2)

要获得与reference page上的图类似的图,必须手动更改y轴的限制:

library(ggplot2)

r_wt <- range(with(mtcars, wt))
r_mpg <- range(with(mtcars, mpg))
cent <- mean(r_wt)
ylimits <- cent + c(-1, +1) * diff(r_mpg)/2

qplot(mpg, wt, data = mtcars) + coord_cartesian(ylim = ylimits)

enter image description here