gpt4 book ai didi

r - ggplot2 中点的大小是否可以在图之间进行比较?

转载 作者:行者123 更新时间:2023-12-04 10:35:41 24 4
gpt4 key购买 nike

我正在使用 ggplot2 生成各种图,其中点的大小与具有相同 x 和 y 值的案例数成正比。有没有办法使点的大小在具有不同 size 值的不同图中具有可比性?

使用假数据的例子:

    df1 = data.frame(x = seq(1:10), 
y = c(4,3.8,3.8,3.2,3.1,2.5,2,1.5,1.2,1.3),
size = c(1,20,1,70,100,70,1,1,110,1))

library(ggplot2)

pdf("plot.1.pdf")
ggplot(df1, aes(x = x, y = y, size = size)) + geom_point()
dev.off()

df2 = data.frame(x = seq(1:10),
y = c(4,3.8,3.8,3.2,3.1,2.5,2,1.5,1.2,1.3),
size = rep(1,length(y)))
pdf("plot.2.pdf")
ggplot(df2, aes(x = x, y = y, size = size)) + geom_point()
dev.off()

图 1 中的所有点都具有 size等于 1,远大于图 2 中 size 的点等于 1。我需要一个版本的图,其中点具有相同的值 size在不同的地块上具有相同的大小。谢谢,

苏菲亚

最佳答案

一种可能性是使用 scale_size_identity() - 将解释 size直接作为点大小的单位,因此在两个图中,值为 1 的点将具有相同的大小。但是如果size,这种方法会产生太大的点数。值很大(就像你的情况一样)。处理点过大的问题,可以使用尺度内部的变换,例如平方根,参数trans="sqrt" .

ggplot(df1, aes(x = x, y = y, size = size)) + 
geom_point()+scale_size_identity(trans="sqrt",guide="legend")

ggplot(df2, aes(x = x, y = y, size = size)) +
geom_point()+scale_size_identity(trans="sqrt",guide="legend")

enter image description here

enter image description here

更新

正如@hadley 所指出的,实现这一点的最简单方法是设置 limits=scale_size_continuous()到相同的值以获得相同的大小。
ggplot(df1, aes(x = x, y = y, size = size)) + geom_point()+
scale_size_continuous(limits=c(1,110))
ggplot(df2, aes(x = x, y = y, size = size)) + geom_point()+
scale_size_continuous(limits=c(1,110))

enter image description here
enter image description here

关于r - ggplot2 中点的大小是否可以在图之间进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16143811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com