1

我是 R 新手,我正在尝试使用该usmap库绘制县值的数据框。

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

这是我的第一个 R 脚本,所以我想要完成的工作可能非常简单,我只是不知道我在做什么。

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

这是我的代码 - 请注意,我最初只是尝试绘制一帧数据(特定日期):

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

当我从函数中删除数据/值行时,我得到一个如下所示的地图:

地图

任何帮助是极大的赞赏!

理想情况下,我想用色阶为数据的每一帧制作动画;如果你们能帮助我,我将不胜感激!

编辑

好的,我已经为此工作了一段时间,并且设法让它工作。但是,我不知道如何更新使用的色阶/渐变。

我让它遍历数据并保存一堆图,这太棒了!如果有人可以提供帮助,只需要弄清楚如何更改颜色/比例!

更新

4

1 回答 1

3

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

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

于 2021-10-12T04:06:58.293 回答