基于ZipCodes在美国热图上着色geom_point()点

时间:2015-03-27 22:06:27

标签: r ggplot2

非常感谢帮助我使用5种不同颜色为geom_points上色。地图中的每个点代表一个ZipCode。数据如下:

ID    zip     city      state    latitude     longitude    num    colorBuckets
-------------------------------------------------------------------------------
1    00210    xxx       NH       43            -71.013     10         1
2    45013    yyy       OH       43            -88.304     200        5
.
.

我希望colorBucket 5显示为深红色,colorBucket 4显示为亮红色,最后colorBucket 1显示为非常浅灰色。有人可以帮我处理代码吗?

这是我到目前为止所拥有的:

g <- ggplot(data=mapdata,
            aes(x=longitude, y=latitude)) + 
            geom_point(aes(fill=colorBuckets), size = 0.04) +
            scale_x_continuous(limits = c(-125,-66), breaks = NULL) +
            scale_y_continuous(limits = c(25,50), breaks = NULL) +
            labs(x=NULL, y=NULL)

我无法发布图像[因为我还没有10个声誉 - 不确定偶数意味着什么]。

但目前的情节是所有黑色圆点,而图例中显示的是各种蓝色,刻度从1到5。

我尝试将以下代码添加到此代码段的末尾但未成功:

scale_fill_manual(values=c("<20"="red", "21 - 60" = "blue", "61 - 80" = "green", "81-100" = "yellow"))
scale_fill_brewer(palette="<palette name>")
scale_colour_nrewer(palette="<palette name>")

非常感谢任何帮助。

谢谢,

2 个答案:

答案 0 :(得分:1)

还有另外一条评论,所以我想我应该发一个答案。这里发生了一些事情:

  • 检查您的列类。如果ggplot显示连续色标(如您所述),那是因为您的数据是连续的。如果您想要5种不同颜色,请将colorBuckets转换为因子

  • geom_point,您应设置color,而不是fill。 (如果你使用形状21:25 then you can set both color and fill

  • ,那就是边缘情况

通过上述更改,您可以使用scale_color_manual,如果您知道自己想要的每种颜色,但根据您的描述,我认为您可以使用

+ scale_color_brewer(palette = "Reds")

答案 1 :(得分:0)

所以这就是我最后要做的,感谢Gregor的反馈。

g <- ggplot(data=mapdata,
        aes(x=longitude, y=latitude)) + 
        geom_point(aes(color=factor(colorBuckets)), size = 0.04) +
        scale_x_continuous(limits = c(-125,-66), breaks = NULL) +
        scale_y_continuous(limits = c(25,50), breaks = NULL) +
        labs(x=NULL, y=NULL) +
        theme_bw() +
        scale_color_manual(values=c("bisque", "darkseagreen2", "maroon", "red")) +
        geom_polygon(data=states, aes(long, lat, group=group), fill=NA, colour="#000000") + 
        labs(x="", y="", title="Some Title")