我正在使用ggplot绘制一个相当简单的散点图.我主要想说明x轴和y轴之间的相关性.因此,我希望xaxis的限制与yaxis的限制相同.
ggplot(VV,aes(x=R1_Zsc,y=R2_Zsc)) +
geom_point() +
stat_smooth() +
facet_wrap(~variable, scales="free")
Run Code Online (Sandbox Code Playgroud)
我尝试了下面的变体,但这也不起作用:
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")
Run Code Online (Sandbox Code Playgroud)
我已经制作了一个数据框,其中包含每个变量的xlimits和y限制,并且我认为我可以使用它,但我不确定如何.
df_rng <- ddply(VV, .(variable), summarise, min=range(c(R1_Zsc,R2_Zsc))[1],max=range(c(R1_Zsc,R2_Zsc))[2])
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
谢谢,coord_fixed(ratio=1)似乎没有工作.我想设置xlim和ylim相同的值.
cars数据集中的示例生成以下图表:
看起来关键是通过构面组创建最小值和最大值的数据集,并geom_blank使用该数据集进行添加.有关简单示例,请参阅此答案.
我发现在思考如何使极限数据集成为这一挑战的一部分.我将使用mpg数据集给出一个例子.
首先是带有不同尺度轴的刻面:
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_wrap(~class, scales = "free")
Run Code Online (Sandbox Code Playgroud)
现在,制作限制的数据集.我用dplyr和tidyr的函数来做这个.这涉及找到每个构面组的两个轴变量的最小最小值和最大值.我在两个单独的列中执行此操作,然后将它们收集到一列中.对于每个轴变量,此数据集实际上需要具有相同的列,因此我将最后一个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
Run Code Online (Sandbox Code Playgroud)
现在只需geom_blank将此数据集添加到原始图形中,每个方面的轴限制都相同.
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_wrap(~class, scales = "free") +
geom_blank(data = facetlims)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |