【问题标题】:Plotting data frame in R using usmap library使用usmap库在R中绘制数据框
【发布时间】:2021-10-11 20:33:23
【问题描述】:

我是 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"]]) &amp; nrow(data) == 0) { : argument is of length zero

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

非常感谢任何帮助!

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

编辑

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

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

【问题讨论】:

  • 我会仔细查看?plot_usmap,因为它说明了您的具体需求。例如,您可能希望将您的 fips 代码列称为 fips,将整个 data.frame 作为数据传递,并指示值的列,例如:plot_usmap(regions = "counties", data = usa.dat, values="X1.22.2020"),这将适用于特定日期。 ..
  • 自最初发布此内容以来,我已经取得了一些进展。现在我真的很困惑如何修改主题和保存实际图像(以及设置标签标题等操作)
  • 我会在几秒钟内用我现在的内容更新问题
  • 还将了解有关ggplot2 的更多信息(plot_usmap 返回ggplot 对象)...因此您可以轻松添加图层并传递美学...因此在您的情况下,您可以使用@ 987654336@ 更改刻度的限制和渐变...尝试添加类似:scale_fill_continuous(low = "white", high ="green", name = "Legend", limits = c(0,300)) 并更改颜色和限制值以满足您的需求...
  • 我不确定您的想法 - 但可能值得发布一个专注于此的新问题...当您发布问题时,使用 dput 共享数据(而不是屏幕截图),并包含您迄今为止尝试过的代码......祝你好运!

标签: r usmap


【解决方案1】:

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

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-02-10
    • 2016-04-04
    • 1970-01-01
    • 2018-04-08
    • 2021-12-27
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 2014-09-29
    相关资源
    最近更新 更多