• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

R语言绘制动态热力地图

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

偶然记起去年一位朋友微信发我一份美国大选数据,请教我如何画动态统计图。我抄起键盘改了改他的代码跑通了。这份数据包含了1960-2012年美国历次大选的投票人数(精确到县级)。我们使用map()函数就能很容易地为地图着色。

唯一创新的点在于我使用了viridis包里的调色盘数据,转化成rgb颜色进行填充。这里本来准备按照惯例使用红蓝配色,但由于着色区域太多,颜色显得很暗。故改为从黄色到蓝色的色谱。

为了给每一幅图片配上相应的图例,我收集了每一任总统姓名、当选年份与对应党派的信息。这些信息被存在president.csv文件里,然后绘制每幅图的时候配上相应年份的信息就行了。

library(maps)
library(animation)
library(viridis)
library(data.table)

election = fread(\'./elections.csv\')
presidenten = fread(\'./president.csv\')

election[, `:=`(sharedem = dem / (rep + dem + other),
                sharerep = rep / (rep + dem + other))]

data(viridis.map) # a viridis palette
setDT(viridis.map)
viridis.map = viridis.map[opt == \'C\', ]
coldt = viridis.map[election[, sharerep * 250], ][, opt := NULL]
election[, county.col := rgb(coldt[, R], coldt[, G], coldt[, B])]

one = viridis.map[0.125 * 250, ]
two = viridis.map[0.375 * 250, ]
thre = viridis.map[0.625 * 250, ]
fo = viridis.map[0.875 * 250, ]

fi = rgb(one[, 1], one[, 2], one[, 3])
se = rgb(two[, 1], two[, 2], two[, 3])
thr = rgb(thre[, 1], thre[, 2], thre[, 3])
fr = rgb(fo[, 1], fo[, 2], fo[, 3])
colors = c(fr, thr, se, fi)

saveGIF({
  for (i in seq(1960, 2012, 4)) {
    # 1960-2012 loop every 4 year
    thisyear = subset(election, year == i)
    map(database = "county",
        # plot by year
        col = thisyear[,county.col],
        fill = T)
    tit = paste(\'United States Presidential Election:\', i) # get every year title
    title(tit, cex.main = 1.3) # Add title
    sub = subset(presidenten, year == i)
    ps = paste(\'Winner:\', sub[, 2], \'-\', sub[, 3]) # get every year winner
    mtext(ps, side = 1, cex = 1.1)
    leg.txt = c("75-100%", "50-75%", "25-50%", "0-25%")
    legend(
      "bottomright",
      leg.txt,
      fill = colors,
      title = ("Republican %"),
      cex = 0.83
    )
  }
} , movie.name = "election_en.gif",
interval = 2) # set every plot stay time

如果将图例和president.csv文件改为中文,也可以画出个中文版的:

注意,最后使用animation输出gif图片需要安装ImageMagick。具体方法上网搜肯定能解决,时间太久远记不得怎么弄了。
最近工作中很少用到R,但是R的一些可视化功能仍然强大,这篇就算做个归档吧。

文中使用的数据,点击下载


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Windows7下R语言的安装及卸载发布时间:2022-07-18
下一篇:
拓端tecdat|使用R语言创建自定义桑基图Sankey图发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap