我已经制作了一系列人口分布图的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的新手!)
答案 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))