如何在ggplot2中的图之间保持点大小比例不变?

时间:2014-03-06 17:23:42

标签: r ggplot2 scale point

我已经制作了一系列人口分布图的GIF(使用ggplot2和Image Magick),其中每个样本都有个体数量,以及纬度和经度值。但是,值的范围因绘图而不同,因此绘图之间的大小是不变的。我试图在图形之间保持值的大小不变(即,低于其值为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

非常感谢任何帮助! (如果代码很乱,请提前道歉,否则我的问题没有100%明确地传达,我是R的新手!)

1 个答案:

答案 0 :(得分:5)

使用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))