R 有没有办法在ggplot2中保持对尺寸比例的绝对控制
我希望根据特定字段的值指定点的大小,但是我希望能够有一个跨越一系列独立生成图表的大小比例 基本上我想说的是,X单位的值应该用一个大小为Y的点来显示 下面是一个例子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(
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()
这是一件很好的事情。最好把它写下来作为一个答案,使它更容易搜索和使用。