首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用usmap库绘制R中的数据帧

用usmap库绘制R中的数据帧
EN

Stack Overflow用户
提问于 2021-10-11 20:33:23
回答 1查看 474关注 0票数 1

我对R很陌生,我试图用usmap库绘制县值的数据框架。

我有一个数据集,包含特定地区的所有FIPS (县代码)和我想要在地图上显示的数据(死亡)。

这是我的第一个R脚本,所以我想要完成的很容易,我只是不知道我在做什么。

我很确定我所收到的错误是因为我没有指定任何颜色来应用于数据?我不太确定。

下面是我的代码--注意,我最初只想绘制一帧数据(特定日期):

代码语言:javascript
复制
library(usmap)
library(ggplot2)
library(RColorBrewer)

#set working directory
setwd("C:/Users/Name/Documents/RScripts/")

#input data from file separated by  commas
usa.dat <- read.csv("covid.csv", header = T)

#Start at 1/22/2020
#End at 10/8/2021

plot_usmap(regions = "counties",
           data=usa.dat$countyFIPS,
           values=usa.dat$X1.22.2020,
           ) +
theme(panel.background = element_rect(color = "black", fill = "black"))

以下是数据:

我得到的错误是Error in if (is.null(geom_args[["fill"]]) & nrow(data) == 0) { : argument is of length zero

当我从函数中删除数据/值行时,我得到了如下所示的映射:

任何帮助都是非常感谢的!

理想情况下,我想用彩色比例尺动画化每一帧数据,如果你们能帮我,我会很感激的!

编辑

好吧,我已经做了很长一段时间了,我设法让它起作用了。但是,我不知道如何更新所使用的色阶/渐变。

我让它循环遍历数据并保存一堆图表,所以这是非常棒的!只要知道如何改变颜色/比例,如果有人可以帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-12 04:06:58

我弄明白了(在本的帮助下)

代码语言:javascript
复制
library(usmap)
library(ggplot2)
library(viridis)
library(RColorBrewer)
library(stringr)
library(stringi)

#set working directory
setwd("C:/Users/Tyrael/Documents/RScripts/")

#input data from file separated by  commas
usa.dat <- read.csv("ccovid.csv", header = T)

for (i in 2:ncol(usa.dat)) {
    da <- data.frame(fips=usa.dat$countyFIPS,val=usa.dat[,i])
    da$val <- cut(da$val,breaks=c(0,100,500,1000,5000,20000,30000),labels=c("1-100","100-500","500-1K","1K-5K","5K-20K","20K-30K"))
    theDate <- substr(names(usa.dat)[i],2,100)
    plot_usmap(regions = "counties",
               data=da,
               values="val"
    ) + 
    labs(title=paste("Covid-19 Deaths ",str_replace_all(theDate,"\\.","/"),sep='')) +
    scale_fill_viridis(name="Deaths",discrete=TRUE,na.translate=F) +
    theme(panel.background = element_rect(color = "#101010", fill = "#101010"))
    ggsave(paste(sprintf("%03d",i),".png",sep=''))
}

这会把一切都分割成这样的传说:

这些文件按顺序输出,另外,我将向您展示如何在ffmpeg中进行组合:

ffmpeg -framerate 15 -i "C:\Users\Tyrael\Documents\RScripts\vpublish\%03d.png" -codec copy out.mkv

并将其转换为.mp4格式:

ffmpeg -i out.mkv -codec copy out.mp4

结果:https://www.youtube.com/watch?v=-z3LL5j__es

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69532190

复制
相关文章

相似问题

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