+18888889999
诚信为本:市场永远在变,诚信永远不变。

R语言ggplot画世界地图并根据条件给国家上色

你的位置: 首页 > 门徒平台资讯

R语言ggplot画世界地图并根据条件给国家上色

2023-08-12 14:59:57

期末结束,来分享一下 Exploration Data Analysis这门课我做的一个图。
语言依旧是 R, 用的Rstudio,这玩意儿真的拉闸,作为一个数据分析主要语言的软件,我数据量一大它就各种死机。
数据用的IMDB的电影数据,因为小组定的storyline是给电影制作人做一个电影分析

数据部分除了IMDB电影数据之外,还引入了国家经纬度的一个数据包。

其实这边数据过大,而且电影没有直接对应拍摄国关系的数据,所以我用了个很迷的筛选方法,导致结果其实不是很准确,但是今天主题是画图,所以暂且不论。如果大家想练手, 我更推荐这个数据集,相对数据量更小列更全。

 
 

导入世界地图边界数据

 

前十行显示如下:

 

看一看描出来的效果

 

world map
这里图像保存用到的是
格式如下,可以设置保存的图片名,保存对象,长和高

 
 

因为world_map的数据要用来准备描边,画图等等,所以是不能动原有的数据。但是为了能根据要求有选择地根据演员电影的平均分上色,我们还是可以把其他的数据left_join()到world_map上。
已经筛选好的数据存在了里,根据演员所拍摄电影的评分数大于2000的电影进行筛选,并且根据演员电影的平均分计算出了act_rate,(描述的有点混乱…不重要) 数据前十行如下:

 

然后join到world_map,因为两个数据集对国家的列命名不同,所以需要一个参数

 

这边数据有点长,不展示了,但是方便起见,其实可以在join前或者之后用select()去掉一些不必要的数据,比如 里的longitude 和 latitude,毕竟world_map里都有了,这里的目的其实只是获得里的演员和评分。
此外,对某些国家数据不足,或者不满足条件的情况,我都将对应数据列留成了NA,并未置零。因为我希望没有数据的国家就不要上色,之前试过置零,结果整张图颜非常鬼畜。后来就觉得不如留着不上色 在这里插入图片描述
此外,我还做了一步,任意挑选了10个不同的国家,存放数据,到时候用以做文字标识。这一次是将的数据join过来。因为如果是相反,将 join到,每个演员部分的数据会对应join到所有该国家的点上,而这里我们只需要一个固定坐标来进行label。

 
 

画图用的是,灰常强大,函数相当于做了一个映射,描述了数据中的变量如何映射到几何图形的视觉特性。
用来上色,将放在内,他会自动根据参数进行颜色填充。
可以视作连续变量,所以颜色是渐变的。
可以用来指定渐变的颜色,低值为什么颜色过渡到高值为什么颜色

 

在这里插入图片描述
再将选好的10个国家的演员数据进行文字标识,其实就是在上述代码中加上两行代码, 其实相当于将两张图覆盖在了一起。因为选用了不同数据集的数据,所以要重新声明来自于哪个数据集。是用来改legend的title,因为不知道为什么里写它不为所动,可能用两个数据集它混乱了,但是一改,颜色的legend变成不连续色块了。

 

在这里插入图片描述
加上guides后

总的来说这个图还是花了我不少时间,而且还是有很多不严谨的地方,欢迎指正。用到的参考网页都链接在下面,希望对大家有帮助。

  1. HOW TO CREATE A MAP USING GGPLOT2
  2. 世界地图 – 使用ggplot2将国家的一半映射到不同的颜色
  3. Borders and colors on world map ggplot2
  4. if else condition in ggplot to add an extra layer
  5. Using purrr::walk() and ifelse to produce ggplots
  6. ggplot画世界地图
  7. ggplot2:画世界地图和中国地图 合并数据 增添信息 标记
  8. 在R中使用ggplot2覆盖两个图
  9. ggplot2 legend图例的修改

地址:海南省海口市玉沙路58号  电话:0898-66889888  手机:18888889999
Copyright © 2012-2018 门徒-门徒娱乐-注册登录站 版权所有 ICP备案编:琼ICP备88889999号 

平台注册入口