0

这可能很困难,因为我无法共享我的数据,并且当我尝试在另一个示例中重现该错误时,它不起作用。我正在尝试制作人口普查区块组的庞大数字,以查看变量如何随时间变化。我在动画中遇到问题,其中几个人口普查块组将浮动并重塑为州之间的不同块。这是无法正常工作的动画。这是用于生成绘图的代码。

library(tigris)
library(ggplot2)
library(sf)
library(gganimate)
library(transformr)

options(tigris_class = "sf")

travis <- block_groups(48, c(453))

# join travis with count data
travis2 <- rbind_tigris(geo_join(travis, travisSD[[1]], "GEOID", "origin_census_block_group"),
             geo_join(travis, travisSD[[58]], "GEOID", "origin_census_block_group"))

p <- ggplot(data = travis2) + 
  geom_sf(aes(geometry = geometry)) +
  geom_sf(aes(fill = proportionLeftHome)) + 
  theme_bw() + 
  scale_fill_distiller(palette = "Spectral") + 
  transition_states(date, 
                    transition_length = 3, 
                    state_length = 10) +
  ease_aes('linear')

animate(p)

当我试图用虚构的数据复制问题时,我无法做到。这是我尝试过的,但效果很好。`

library(tigris)
library(ggplot2)
library(sf)
library(gganimate)
library(transformr)

set.seed(42)
options(tigris_class = "sf")

travis <- block_groups(48, c(453))

travis1 <- travis
travis2 <- travis

travis1$date <- as.Date("2020/02/01")
travis1$count <- runif(580, 0, 1000)

travis2$date <- as.Date("2020/03/01")
travis2$count <- runif(580, 0, 1000)

travisJoined <- rbind_tigris(travis1, travis2)

p <- ggplot(data = travisJoined) + 
  geom_sf(aes(geometry = geometry)) +
  geom_sf(aes(fill = count)) + 
  theme_bw() + 
  scale_fill_distiller(palette = "Spectral") + 
  transition_states(date, 
                    transition_length = 3, 
                    state_length = 10)

animate(p)

有人知道这里可能存在什么问题吗?我这辈子都想不通。我已经能够识别出导致问题的几个块组,但是当我查看它们的数据时,我看不出任何明显的原因来说明为什么会发生这种情况。

4

1 回答 1

0

我最近有一个类似的问题。我通过在我的审美中添加 group 参数并指定人口普查区来解决它。例如:

ggplot(data = travisJoined) + 
geom_sf(aes(geometry = geometry, fill = count, group = GEOID10)) +
theme_bw() + 
scale_fill_distiller(palette = "Spectral") + 
transition_states(date, 
                transition_length = 3, 
                state_length = 10)
于 2021-08-15T01:34:52.533 回答