使用 ggplot 对 2 个不同的图使用相同的 alpha/尺寸比例

use*_*408 1 plot r ggplot2

我有 2 个数据框,用来制作 2 个散点图。我使用一列来设置标记的 Alpha 和大小,并且我需要第二个图中的缩放比例与第一个图中相同。问题是,虽然图 A 中的值范围从 0 到 1,但在图 B 中,它们的范围从 0 到 0.5(B 中的刻度也应该从 0 到 1)...

快速示例:

x=seq(from=1, to=10, by=1)
y=seq(from=1, to=10, by=1)
markerA=sample(0:100,10, replace=T)/100
markerB=sample(0:50,10, replace=T)/100
dfA=data.frame(x,y,markerA)
dfB=data.frame(x,y,markerB)
a<- ggplot(dfA,aes(x=x, y=y))
a <- a + geom_point(aes(alpha=dfA$markerA, size=dfA$markerA))
a
b<- ggplot(dfB,aes(x=x, y=y))
b <- b + geom_point(aes(alpha=dfB$markerB, size=dfB$markerB))
b
Run Code Online (Sandbox Code Playgroud)

地块 A 地块B

我认为应该有一个简单的方法来做到这一点,但我似乎找不到它......

bVa*_*bVa 5

只需将scale_size和添加scale_alpha到您的绘图中即可。
ggplot2,记住不要用$variableaes

这是一个例子:

在此输入图像描述

a = ggplot(dfA,aes(x=x, y=y)) + 
geom_point(aes(alpha=markerA, size=markerA)) + 
scale_size(limits = c(0,1)) + 
scale_alpha(limits = c(0,1))

b = ggplot(dfB,aes(x=x, y=y)) + 
geom_point(aes(alpha=markerB, size=markerB)) + 
scale_size(limits = c(0,1)) + 
scale_alpha(limits = c(0,1))

grid.arrange(a,b)
Run Code Online (Sandbox Code Playgroud)