首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式化ggplot2映射

格式化ggplot2映射
EN

Stack Overflow用户
提问于 2013-03-09 21:07:30
回答 1查看 1.5K关注 0票数 5

我试图用R中的ggplot2制作一张世界地图,我想显示巴西各州的人均国内生产总值。有两个问题:

  1. 在这个国家的中心有两个标签不容易读懂的信息。他们是overlapping.Reducing,数字还没有解决。
  2. 我想要改变颜色,不知道如何访问它。我想用颜色变得容易注意到GDP的差异。

我的数据是:coFit6AovfcEFkbHBjZEJaQ1E/edit

这是我的代码:

代码语言:javascript
复制
library(maptools)
gpclibPermit()
library(ggplot2)
library(rgdal)
library(rgeos)
library(ggmap)


# read administrative boundaries (change folder appropriately)
brMap <- readShapePoly("BRASIL.shp")
brMap

# read downloaded data (change folder appropriately)
brRen <- read.csv("Renda.csv", sep = ";", quote = "\"", dec=".", stringsAsFactors = FALSE)
brRen$rendapc <- as.numeric(as.character(brRen$rendapc)) # format as numeric

#convert shp to UTF8
library(descr)
brMap$ESTADO<-toUTF8(brMap$ESTADO, "IBM850")

# convert shp data to data frame for ggplot
as.data.frame(brMap) # para definir a region
brMap = gBuffer(brMap, width=0, byid=TRUE) #correct problem with Polygons - TopologyException
brMapDf <- fortify(brMap, region="UF")
brMapDf


# merge map and data
brRenMapDf <- merge(brMapDf, brRen, by.x="id", by.y="Iden")
brRenMapDf <- brRenMapDf[order(brRenMapDf$order),]

# limit data to main Europe
brazil.limits <- geocode(c("Monte Caburaí", "Barra do Chuí", "Serra do Divisor", "Ilhas Martin Vaz"))
brRenMapDf <- subset(brRenMapDf, long > min(brazil.limits$lon) & long < max(brazil.limits$lon) & lat > min(brazil.limits$lat) & lat < max(brazil.limits$lat))

# ggplot mapping
# data layer
m0 <- ggplot(data=brRenMapDf)
# empty map (only borders)
m1 <- m0 + geom_path(aes(x=long, y=lat, group=group), color='gray') + coord_equal()
m1

# fill with education expenditure data
m2 <- m1 + geom_polygon(aes(x=long, y=lat, group=group, fill=rendapc))
m2


# inverse order (to have visible borders)
m0 <- ggplot(data=brRenMapDf)
m1 <- m0 + geom_polygon(aes(x=long, y=lat, group=group, fill=rendapc)) + coord_equal()
m2 <- m1 + geom_path(aes(x=long, y=lat, group=group), color='black')
m2


# over a GoogleMap (not working if not correctly projected)
map <- get_map(location = 'Brazil', zoom=4)
m0 <- ggmap(map)
m1 <- m0 + geom_polygon(aes(x=long, y=lat, group=group, fill=rendapc), data=brRenMapDf, alpha=.9)
m2 <- m1 + geom_path(aes(x=long, y=lat, group=group), data=brRenMapDf, color='black')
m2


# add text
library(doBy)
txtVal <- summaryBy(long + lat + rendapc ~ id, data=brRenMapDf, FUN=mean, keep.names=T)
m3 <- m2 + geom_text(aes(x=long, y=lat, label=rendapc), data=txtVal, col="yellow", hjust=0.5, vjust=0.5, cex=3)
m3

我想提高我的成绩:

EN

回答 1

Stack Overflow用户

发布于 2013-03-09 21:42:27

在改变色标方面,ggplot2有统一的处理方法。您要寻找的函数始终具有scale_{which_scale}_{scale_type}格式,其中which_scale是一种美学(您在aes()中使用的东西,例如fillsize),scale_type可以是连续的或离散的,等等。如果您想要调整fill比例,需要的是scale_fill_continuousscale_fill_gradientscale_fill_gradient2。请查看这些功能的文档。

代码示例:

代码语言:javascript
复制
m2 <- m1 + geom_polygon(aes(x=long, y=lat, group=group, fill=rendapc))
m2 + scale_fill_gradient(low = "blue", high = "red")
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15315939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档