ggplot画全球番茄产量热图
1. 在FAO下载数据
2. 把数据导入到RStudio
3. 画图
> library(ggplot2)
> library(dplyr)
> world <- map_data('world') %>% filter(region != "Antarctica") %>% fortify #dplyr的%>%相当于管道符
> head(world,6)long lat group order region subregion
1 -69.89912 12.45200 1 1 Aruba <NA>
2 -69.89571 12.42300 1 2 Aruba <NA>
3 -69.94219 12.43853 1 3 Aruba <NA>
4 -70.00415 12.50049 1 4 Aruba <NA>
5 -70.06612 12.54697 1 5 Aruba <NA>
6 -70.05088 12.59707 1 6 Aruba <NA>
> View(tomato) #View()是因为这个csv数据有点多
> names(tomato)[1] "Domain Code" "Domain" "Area Code" [4] "Area" "Element Code" "Element" [7] "Item Code" "Item" "Year Code"
[10] "Year" "Unit" "Value"
[13] "Flag" "Flag Description"
#只需要Area Value
> new_tomato <- tomato[,c(4,12)]
> names(new_tomato) <- c("region","value") #将FAO的国家names改成和world里的名称一致
> unique(world$region) #发现world里有251个国家
> unique(new_tomato$region) #发现FAO数据中有169个国家
> tomato_map <- merge(new_tomato,world,by='region',all=TRUE) #对2个数据集进行全连接,因为FAO中的国家名字和world数据集中的国家名字有时候可能有所不同,当两个数据集的名称有差异时,会在lon和lat中产生NA,因此需要进一步手工校对国家的名字,这里就不进行演示了
> unique(tomato_map$value)[order(unique(tomato_map$value))]#观察数值范围
[1] 0 10 37 59 112 146 233[8] 274 275 351 398 460 494 495[15] 510 525 558 598 680 767 936[22] 1113 1183 1186 1338 1731 1960 2460[29] 3447 3648 3730 3979 4750 5147 6444[36] 6572 6602 6800 8684 8765 9010 9339[43] 9840 10620 11311 11710 11760 14329 16140[50] 16173 16900 16947 18372 18844 19454 19539[57] 22020 22850 24545 26108 28034 28270 28309[64] 31591 31921 34947 35560 37351 37891 38199[71] 40450 42129 43700 44235 49926 51099 52984[78] 58330 60034 60893 62600 66144 70319 72357[85] 74008 77916 82636 94036 104794 105359 105758[92] 106690 111639 124944 128887 145010 148000 152348[99] 158784 159977 176505 180930 182654 201293 202242
[106] 218358 223294 240734 261604 270140 272488 274700
[113] 297910 298996 299669 310946 329188 332101 332608
[120] 356809 387653 395755 420573 436550 480300 490286
[127] 491024 496216 542686 555485 556692 561293 619543
[134] 627788 628191 658106 676623 697817 708467 709280
[141] 714600 771649 790501 808670 910000 917800 1020331
[148] 1050626 1215466 1300000 1347085 1477878 1544380 2120120
[155] 2224440 3015010 3816009 3917967 4271914 5000560 5248904
[162] 5252690 6751856 10858990 12841990 19007000 62764671 62869502
[169] NA
> tomato_map <- tomato_map %>% mutate(grade = case_when(value > 100000000 ~ '5',value > 10000000 ~ '4',value > 1000000 ~ '3', value > 100000 ~ '2' , value <= 100000 ~ '1',is.na(value)~'0')) #按照value进行分级
> tomato_map2 <- tomato_map[order(tomato_map$order),] #把顺序排回来,不然画图会只显示部分地区
> ggplot() +geom_polygon(data = tomato_map2,aes(x=long, y = lat, group = group,fill =factor(grade)),color="white",size=0.1) +scale_fill_manual(labels = c("No data","<=100000.0","<=1000000.0","<=10000000.0","<=100000000.0",">100000000.0"),values = c('grey','#fdfdb8', '#fccf6b','#fb974e','#f14046','#c20b2b')) +theme(panel.grid = element_blank(),panel.background = element_blank(),panel.border = element_rect(linetype = "solid", fill = NA),axis.text = element_blank(),axis.ticks = element_blank(),axis.title = element_blank(),plot.title = element_text(hjust = 0.5,vjust=0,size=22))+coord_quickmap()+labs( fill = "")+ggtitle("Production quantities of Totatoes by country\n")
效果图如下,注意像美国、俄罗斯这些地区没有信息是因为world和FAO中的国家名称不一致,可以自己修改
4. AI提高图片分辨率
ggplot画全球番茄产量热图相关推荐
- R语言用EnhancedVolcano和ggplot画同一数据的火山图
getwd() #下载方式有很多,挑自己能下载的办法下载好几个包就好,我们用自带的数据就好 install.packages("SeuratData") devtools::ins ...
- R语言ggplot画双坐标-柱状图、折线图
ggplot一般不用来画双坐标,有些图双坐标结合起来看比较好,比方说条形图和柱状图. 1.画双坐标要用到函数scale_y_continuous,这个函数规定次坐标与主坐标的换算关系,用 sec_ax ...
- distinct group by一起用_用ggplot2来画带有对角线的热图。
最近有人在群里提问,下面的热图该怎么画. 这张热图,在每一个格子里面用对角线一分为二,呈现了两类信息.图片来自于这篇文章的图1D. 通常,遇到这种需求,我都会直接检索,看看有没有现成的R包可用.可以提 ...
- R语言ggplot画世界地图并根据条件给国家上色
期末结束,来分享一下 Exploration Data Analysis这门课我做的一个图. 语言依旧是 R, 用的Rstudio,这玩意儿真的拉闸,作为一个数据分析主要语言的软件,我数据量一大它就各 ...
- 使用ggplot2画 点图、箱线图、小提琴图、蜂窝图、云雨图
使用ggplot2画 点图.箱线图.小提琴图.蜂窝图.云雨图 加载包 library(tidyverse) library(cowplot) library(ggrepel) library(ggsc ...
- 不需要懂得编程,但却可以使用ggplot2画出论文级别的图?
你有没有遇到过这样的烦恼,你需要画一些论文级别的图,并且你知道R中的ggplot2是一个很好的选择,可以画出符合你要求的图.但是由于你不熟悉ggplot2的使用,你需要上网倒弄一番,了解与你图相关的代 ...
- python怎么画多重饼状图_Python通过matplotlib画双层饼图及环形图简单示例
(1) 饼图(pie),即在一个圆圈内分成几块,显示不同数据系列的占比大小,这也是我们在日常数据的图形展示中最常用的图形之一. 在python中常用matplotlib的pie来绘制,基本命令如下所示 ...
- python画最简单的折线图,推荐origin画图软件
1.因实际需要,需要画一些简单的折线图,详细代码见下: import matplotlib.pyplot as plt import numpy as nplist1=[1,2,3,4,5,6,7,8 ...
- 续航超1000km,极氪成为宁德时代麒麟电池全球量产首发品牌 | 美通社头条
美通社消息:8月27日,宁德时代新能源科技股份有限公司(宁德时代)与极氪智能科技有限公司(极氪)共同宣布极氪是麒麟电池的全球量产首发的品牌.极氪009为麒麟电池首发车型,而极氪001将成为全球首款搭载 ...
最新文章
- 使用command-privilege给H3C、华为设备的用户帐号授权
- LeetCode: 13. Roman to Integer
- vuex结合php,vuex中store的使用介绍(附实例)
- 解读服务器虚拟化的十大误区
- 开发常见错误解决(7)连接到SQL Server 2005出错
- subList生成的列表和原列表的对比
- selenium实现登录百度(自动识别简单验证码)
- usb serial port 驱动_tty初探 — uart驱动框架分析
- 演示IPFS的一个完整的流程以及针对部分概念的详解
- discuz手机客户端java,Discuz!7.2让高级搜索更全面
- 一起Polyfill系列:让Date识别ISO 8601日期时间格式
- Linq to xml 示例分析
- JSON有关的一道题
- Mybatis 传参问题
- 水经注下载的地图版权_如何使用水经注万能地图下载器下载谷歌卫星地图
- 从阿里投资B站看动漫IP,二次元市场蕴含了怎样的价值?
- C++模板编程(18)---模板实例化instantiation
- crmeb知识付费二开文档
- 判断一个数是不是奇数
- 上网代理设置会被自动清空_代理服务器上网(代理服务器老是自动打开)
热门文章
- 前端开发之从零开始的uniapp(1):创建uni-app项目
- SCons教程 (2) SConstruct 文件介绍
- 常见的BlockingQueue有哪些
- Request和response的用法总结
- 整理了643个计算机夏令营预推免招生项目,特点如下:
- 项目十大管理之成本管理
- lwip系列一之数据的收发
- java dozer,MapStruct相当于提示(Dozer)?
- 内核文件ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe, ntkrpamp.exe到底有什么区别
- IOS NDDictionary使用中value遇到no summary如何判断为NULL