如何在ggplot2中保持点大小比例尺的一致?

4
我已经使用ggplot2和Image Magick制作了一系列人口分布图的GIF,每个样本都有个体数量、纬度和经度值。然而,不同图之间数值范围不同,因此图之间的大小是恒定的。我试图在图表之间保持数值的大小恒定(即下方具有30值的点比10值的点更大)。
这里是一个可重现的示例:
    #simulating latitude and longitude point creation
    a <- c("1","1")
    b <- c("2","2")
    c <- c("3","1")

    x <- rbind(a,b,c)
    x <- as.data.frame(x)

    #simulating the total individual count in my data
    mag1 <- as.numeric(c("2", "6", "10"))
    mag2 <- as.numeric(c("2", "6", "30"))

    d1 <- cbind(x, mag1)
    d2 <- cbind(x, mag2)

    #Plotting the two scatter plots
    g1 <- ggplot(data=d1, aes(x=V1, y=V2)) + geom_point(aes(size=mag1))
    g1
    g2 <- ggplot(data=d2, aes(x=V1, y=V2)) + geom_point(aes(size=mag2))
    g2

非常感谢任何帮助!(如果代码有点混乱或者我的问题没有表达清楚,我是R的新手,请提前谅解!)
1个回答

6

使用scale_size_continuous()并为所有绘图设置相同的limits=。使用参数breaks=可以设置图例中显示的值(断点)。如果在图中得到的点的最大大小太小,那么您还可以更改参数range=,其默认值为range=c(1,6)

g1 + scale_size_continuous(limits=c(1,30),breaks=c(5,10,20,30))

g2 + scale_size_continuous(limits=c(1,30),breaks=c(5,10,20,30))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接