R 如何更改ggplot2中复杂填充的颜色?

R 如何更改ggplot2中复杂填充的颜色?,r,ggplot2,R,Ggplot2,我正在绘制一张关于疟原虫耐药性的不同研究地点的地图。研究地点的点的大小与抽样的疟原虫数量有关,点的填充为0到1的抗药性疟原虫比例梯度。以下代码显示以下地图: ###GENERATING AFRICA MAP### africa = readOGR("/Users/transfer/Documents/Mapping Files/Africa Countries/Africa_SHP", layer="dissolved") #FIXING THE NON-NODED INTERSECTS#

我正在绘制一张关于疟原虫耐药性的不同研究地点的地图。研究地点的点的大小与抽样的疟原虫数量有关,点的填充为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吗?

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

您可以将美学映射到
aes()
中数据框中的变量。因此,
aes(color=var)
将颜色美学映射到变量var,您会得到一个图例来显示颜色如何随变量而变化。如果您将
aes()
之外的颜色设置为单个值,那么您只需将所有点设置为单个颜色:
color=“red”

我怀疑您感到困惑的原因是,您在
aes()
内部有
size=Tot437
,然后在
aes()
外部有
size=size
size=0.5

最后,要更改调色板,您需要了解
scale\u color\u*
函数(以及
scale\u fill\u*、scale\u size\u*
等)。下面是一个简单的示例,让您开始学习:

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])

dat,除了当
pch=21
时需要
fill
之外(更令人困惑的是)
!e、 g.看@Benbolker Good catch,我在问题中完全忽略了这一点。一旦我不再使用手机,我就会编辑。