如何使用facet_wrap将yaxis设置为等于xaxis geom_point

用户名

我正在使用ggplot绘制一个相当简单的散点图。我主要对说明x和y轴之间的相关性感兴趣。因此,我希望x轴的限制等于y轴的限制。

ggplot(VV,aes(x=R1_Zsc,y=R2_Zsc)) +
  geom_point() +
  stat_smooth() +
  facet_wrap(~variable, scales="free")

我尝试了以下变体,但还是没有用:

ggplot(VV, aes(x=R1_Zsc,y=R2_Zsc)) +
  geom_point() +
  stat_smooth() +
  xlim=range(c(VV$R1_Zsc,VV$R2_Zsc)) +
  ylim=range(c(VV$R1_Zsc,VV$R2_Zsc)) +
  facet_wrap(~variable, scales="free")

我已经制作了一个数据框,其中包含每个变量的xlimits和ylimits,并认为我可以使用它,但是我不确定如何使用。

df_rng <- ddply(VV, .(variable), summarise, min=range(c(R1_Zsc,R2_Zsc))[1],max=range(c(R1_Zsc,R2_Zsc))[2])

任何帮助表示赞赏。

谢谢,coord_fixed(ratio=1)似乎没有用。我想将xlimylim设置为相同的值。

这是输出图 在此处输入图片说明

来自汽车数据集的示例产生以下图形:

在此处输入图片说明

奥史密斯

看起来关键是要按构面组使最小值和最大值的数据集生成并geom_blank使用该数据集进行添加请参阅此答案以获取简单示例。

我发现,思考如何使限制数据集成为其中的难题。我将使用mpg数据集来举一个例子。

首先,具有不同比例轴的构面:

ggplot(mpg, aes(displ, hwy)) +
    geom_point() +
    facet_wrap(~class, scales = "free")

在此处输入图片说明

现在,创建限制的数据集。我使用dplyrtidyr的函数来执行此操作这涉及为每个构面组找到两个轴变量的最小最小值和最大值。我在两个单独的列中执行此操作,然后将它们收集到一个列中。对于每个轴变量,此数据集基本上都需要具有相同的列,因此我将重复的列添加到y轴名称的最后。

library(tidyr)
library(dplyr)

facetlims = mpg %>% 
    group_by(class) %>% 
    summarise(min = min(displ, hwy), max = max(displ, hwy)) %>%
    gather(range, displ, -class) %>%
    mutate(hwy = displ, range = NULL)

Source: local data frame [14 x 3]

        class displ   hwy
        (chr) (dbl) (dbl)
1     2seater   5.7   5.7
2     compact   1.8   1.8
3     midsize   1.8   1.8
4     minivan   2.4   2.4
5      pickup   2.7   2.7
6  subcompact   1.6   1.6
7         suv   2.5   2.5
8     2seater  26.0  26.0
9     compact  44.0  44.0
10    midsize  32.0  32.0
11    minivan  24.0  24.0
12     pickup  22.0  22.0
13 subcompact  44.0  44.0
14        suv  27.0  27.0

现在,只需geom_blank将此数据集添加到原始图形,每个面内的轴限制都相同。

ggplot(mpg, aes(displ, hwy)) +
    geom_point() +
    facet_wrap(~class, scales = "free") +
    geom_blank(data = facetlims)

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章