你如何改变ggplot2中复杂填充的颜色?

Dav*_*vid 4 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#
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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

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)
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何获得填充的颜色以显示红色,更轻的是0和更暗的是1吗?

jor*_*ran 5

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

您将美学映射到数据框内的变量aes().因此,aes(color = var)将颜色美学映射到变量var,您将获得一个图例,以显示颜色随var的变化情况.如果颜色设置aes()在单个值之外,则只需将所有点设置为单一颜色:color = "red".

我怀疑你困惑的原因是,你size=Tot437的内部aes(),然后 size=sizesize=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])
Run Code Online (Sandbox Code Playgroud)

我是如何想出那种看起来很疯狂的颜色规格的?只是从最初的几行开始scale_fill_continuous,然后在munsell包中稍微戳了一下.

编辑:我完全忘记你是实际使用pch = 21,其基本上是同时的唯一点形状fill的审美观,所以我已经修改,以去除对成绩我的意见.

  • 除了(甚至更令人困惑)``pch = 21`时需要`fill`*!例如,请参阅http://stackoverflow.com/questions/10437442/place-a-border-around-points/10437545#10437545 (2认同)