R 有没有办法在ggplot2中保持对尺寸比例的绝对控制

R 有没有办法在ggplot2中保持对尺寸比例的绝对控制,r,ggplot2,R,Ggplot2,我希望根据特定字段的值指定点的大小,但是我希望能够有一个跨越一系列独立生成图表的大小比例 基本上我想说的是,X单位的值应该用一个大小为Y的点来显示 下面是一个例子 library(ggplot2) df_1 <- data.frame(x=c(1:3),y=rep(1,3),size=10*c(1:3)) df_2 <- data.frame(x=c(1:3),y=rep(1,3),size=100*c(1:3)) df_1_plot <- ggplot(df_1,aes(

我希望根据特定字段的值指定点的大小,但是我希望能够有一个跨越一系列独立生成图表的大小比例

基本上我想说的是,X单位的值应该用一个大小为Y的点来显示

下面是一个例子

library(ggplot2)

df_1 <- data.frame(x=c(1:3),y=rep(1,3),size=10*c(1:3))
df_2 <- data.frame(x=c(1:3),y=rep(1,3),size=100*c(1:3))

df_1_plot <- ggplot(df_1,aes(x=x,y=y,size=size)) +
  geom_point()

df_2_plot <- ggplot(df_2,aes(x=x,y=y,size=size)) +
  geom_point()
库(ggplot2)

df_1实现这一点的一种方法是使用
scale_size_continuous()
以及指定的缩放常数手动调整比例,将其固定到原始数据帧比例-尽管使用
min(df_1$size)
可以使大小更易于管理,但任何常数都应该起作用。这样,每个点的大小都与相同的任意常数有关(在本例中为
min(df_1$size)

然后,代码将类似于:

ggplot(df_1,aes(x=x,y=y,size=size)) + 
geom_point() + 
scale_size_continuous(range = c(min(df_1$size)/min(df_1$size), max(df_1$size)/min(df_1$size))) 

ggplot(df_2,aes(x=x,y=y,size=size)) + 
geom_point() + 
scale_size_continuous(range = c(min(df_2$size)/min(df_1$size), max(df_2$size)/min(df_1$size)))

然而,正如lukeA提到的,使用
scale\u size\u identity()。。。这项工作:
ggplot(df_1,aes(x=x,y=y,size=size))+geom_-point()+scale_-size连续(范围=c(最小(df_1$size)/min(df_1$size)、max(df_1$size)/min(df_2,aes(x=x,y=y,size=size))+geom_-point()+scale_-size连续(范围=c(最小(df_2$size)/min(df_1$size)、max(df_2$size)/min(df_-size)/min(df_-size)/min$size))
你也可以使用
+scale\u size(range=c(10,30))
+scale\u size\u identity()
。谢谢@lukeA-
scale\u size\u identity()
这是一件很好的事情。最好把它写下来作为一个答案,使它更容易搜索和使用。