前两天用python的plotly画了一个疫情图,发现这个挺简单的,但是当我用R画的时候就有点陌生了,毕竟才学没多久。。。一开始我尝试用R中的ggplot2包和maps包绘制美国疫情地图,但是发现它的呈现出来的是一张图片式的,只能显示宏观的结果,而且绘制的前提是我需要知道对应经纬度下的疫情状况,感觉有点麻烦呀。关于maps包所含的地图数据集:
国家 | maps地图数据名 |
法国 意大利 新西兰 美国(郡) 美国(州) 美国(边界) 全世界 | france italy nz country state usa world |
不错,有我所需要的地理信息,我们可以绘制一个简单的美国地图(qplot绘制散点):
library(maps)
library(ggplot2)
qplot(long,lat,data=us.cities,color=I('blue'))+borders("state",size=0.5)
效果如下:
关于ggplot的函数基本使用可以参考。
更直接详细的可以参考这位大佬的站点:http://zevross.com/blog/2014/07/16/mapping-in-r-using-the-ggplot2-package/。
正如你所见,很宏观的显示出一些信息,但是我想让我的地图更具互动式,我在查看plotly官网的时候,发现这个包不仅支持python还支持R,妙呀,来看看这些官网提供的互动式地图吧:https://plotly.com/r/maps/。
更妙的是我不需要知道在之前爬取的表格中添加经度与纬度的信息,我直接用州的简写码就可以绘制对应数据:
这是部分表格数据,ok,代码呈现:
#加载需要用到库
library(plotly)
library(xlsx)
library(DT)
df <- read.xlsx2("D:\\R\\RData\\america(8月).xlsx",sheetIndex = 1) #读取表格
# datatable(df)
df$hover <- with(df, paste(state, '<br>', "确诊人数:", definte,"<br>","死亡人数:", death, "<br>","死亡率:",rate,"%")) #鼠标放上显示相关数据
fig <- plot_geo(df, locationmode = 'USA-states') #将表格数据与美国地图关联
#交互
fig <- fig %>% add_trace(
locations = ~code,
type='choropleth',
z= ~definte,
text = ~hover,
colorscale="Reds"
)
#添加标题
fig <- fig %>% layout(
title = '美国疫情状况'
)
#显示
fig
最后呈现的结果如下:
好啦,本文到此结束,R的学习仍在继续。