我想根据特定字段的值指定点的大小,但是我希望能够拥有跨越一系列独立生成的图表的大小比例。
本质上我希望能够说 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()
df_1_plot 将生成与 df_2_plot 不同比例的图表,尽管 df_2 大小字段是 df_1 大小字段的 10 倍:
我正在寻找 df_2_plot 中的点大小比 df_1_plot 中的点大 10 倍。
实现此目的的一种方法是手动调整比例,将其固定为原始数据帧比例,使用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)))
然而正如卢克A提到的使用scale_size_identity()
代替scale_size_continuous()
以更优雅的方式达到相同的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)