4

我正在绘制一张地图,其中包含不同的疟疾寄生虫耐药性研究地点。研究地点的点的大小与采样的疟原虫数量相关,并且这些点的填充是从 0 到 1 的具有耐药性的疟原虫比例的梯度。以下代码显示了下面的地图:

###GENERATING AFRICA MAP###
africa = readOGR("/Users/transfer/Documents/Mapping Files/Africa Countries/Africa_SHP",    layer="dissolved")
#FIXING THE NON-NODED INTERSECTS#
africa = gBuffer(africa, width=0, byid=TRUE)
#CREATING DATA FRAME FOR GGPLOT#
africa.map = fortify(africa, region="ID")

###PLOTTING SPM.437###
#SCALING THE SAMPLE SIZE USING CUBE-ROOT#
size = d.spm.437$Tot437^(1/3)
#PLOTTING#
ggplot(africa.map, aes(x = long, y = lat, group = group)) + 
    geom_polygon(colour="black",   size=0.25, fill="white", aes(group=group)) +
    geom_point(data = d.spm.437, aes(x = long, y = lat, fill=Frc437, group=NULL, size=Tot437), 
        size=size, shape=21, colour="black", size=0.5)

在此处输入图像描述

我尝试使用颜色选项,但它不起作用:

ggplot(africa.map, aes(x = long, y = lat, group = group)) + 
    geom_polygon(colour="black",   size=0.25, fill="white", aes(group=group)) +
    geom_point(data = d.spm.437, aes(x = long, y = lat, colour="red", fill=Frc437, group=NULL, size=Tot437), 
        size=size, shape=21, colour="black", size=0.5)

任何人都知道如何让填充的颜色显示红色的比例,较浅的为 0,较暗的为 1?

4

1 回答 1

5

正如我在评论中提到的,我认为您对设置与映射美学有点困惑。

您将美学映射到aes(). 因此,aes(color = var)将颜色美学映射到变量 var,您会得到一个图例来显示颜色如何随 var 变化。如果您之外的颜色设置aes()为单一值,那么您只是将所有点设置为单一颜色:color = "red"

我怀疑你感到困惑的原因是你有size=Tot437inside of aes(),然后既有 size=size又有size=0.5外部aes()

最后,要更改调色板,您需要了解scale_color_*功能(以及scale_fill_*, scale_size_*等)。这是一个简单的示例,可以帮助您入门:

dat <- data.frame(x = rnorm(50),
                  y = rnorm(50),
                  f = runif(50))

library(ggplot2)
library(munsell)
cl <- mnsl(c("5R 2/4", "5R 7/10"))

ggplot(dat,aes(x,y,fill = f)) + 
    geom_point(size = 5,shape = 21) + 
    scale_fill_gradient(low = cl[1],high = cl[2])

我是怎么想出那种看起来很疯狂的颜色规格的?只是从前几行开始scale_fill_continuous,然后在 munsell 包中闲逛了一下。

编辑:我完全错过了你实际使用pch = 21基本上是唯一的点形状,而fill美学是有意义的,所以我编辑删除了我对这个分数的评论。

于 2012-12-07T18:32:52.880 回答