我有一个主要的情节,只有当一个人意识到底层数据生成过程时才能理解,这再次通过情节得到了最好的说明。因此,我想把这两个情节放在一起。问题是,这两个图使用完全不同的尺度。这是我在一个最小的可复制示例中所走的路:
library(tidyverse)
df <- data.frame(x=c("borrowing", "ignorant", "borrowing", "ignorant"), y=c(0.9, 0.5, 0.2, 0.8), z=c("same", "same", "diff", "diff"))
myfun <- function(a,b,x){a + x*b}
ggplot() +
geom_point(data=df, aes(x=x,y=y))+
geom_function(data = data.frame(z="diff"), fun=myfun, args=list(a=0, b=2)) +
geom_function(data = data.frame(z="same"), fun=myfun, args=list(a=0, b=1)) +
facet_grid(~z)
这一切都很好,除了geom_function(连续)使用与geom_point(离散)相同的比例。理想情况下,我想用离散的x轴绘制点几何(类别为“借用”和“无知”),用连续的x轴绘制函数几何(x值从0到20,而不是像现在这样从1到2)。有没有可能基于ggplot实现这一点?当然,我是开放的包,如gridExtra等。
2条答案
按热度按时间sg3maiej1#
您可以尝试将
facet_wrap
与scales = "free_y"
参数一起使用。只需将facet_grid
行更改为以下内容:pkwftd7m2#
在将离散x变量转换为连续变量后复制轴可以做到这一点,然后在
sex_axis
参数中重新缩放第二个轴,遵循这篇文章的建议:Duplicating (and modifying) discrete axis in ggplot2