R ggplot2比例\填充\梯度不一致地消失

R ggplot2比例\填充\梯度不一致地消失,r,ggplot2,R,Ggplot2,我一直在学习如何为显示新冠病毒-19感染数据的工作绘制地图。除了国家地图之外,我还在制作东北部、南部、西部和中西部的区域地图。代码是相同的,我只是在国家数据框上使用不同的过滤器。我为每天的数据制作一张地图,并使用gganimate制作帧,最后使用gifski制作动画gif。国家地图的基本代码为: p <- pop_counties_cov %>% ggplot() + geom_sf(mapping = aes(fill = infRate, geometry=geometr

我一直在学习如何为显示新冠病毒-19感染数据的工作绘制地图。除了国家地图之外,我还在制作东北部、南部、西部和中西部的区域地图。代码是相同的,我只是在国家数据框上使用不同的过滤器。我为每天的数据制作一张地图,并使用gganimate制作帧,最后使用gifski制作动画gif。国家地图的基本代码为:

p <- pop_counties_cov %>%
  ggplot() +
  geom_sf(mapping = aes(fill = infRate, geometry=geometry), color = NA) +
  geom_sf(data = states_sf, fill = NA, color = "black", size = 0.25) +
  coord_sf(datum = NA) +   
  scale_fill_gradient(name = "% Population Infected", trans = "log", low='green', high='red',
                      na.value = "white",
                      breaks=c(0, round(max(pop_counties_cov$infRate),3))) +
  geom_point(data=AFMCbases, aes(x=longitude.1, y=latitude.1,size=personnel), color = "hotpink") +
  #geom_label_repel(data=AFMCbases, aes(x=longitude.1, y=latitude.1, label=Base)) +
  theme_bw() + 
  labs(size='AFMC \nMil + Civ') +
  theme(legend.position="bottom", 
        panel.border = element_blank(),
        axis.title.x=element_blank(), 
        axis.title.y=element_blank())
p%
ggplot()+
geom_sf(映射=aes(填充=红外线,几何=几何),颜色=NA)+
几何尺寸(数据=状态,填充=NA,颜色=“黑色”,尺寸=0.25)+
坐标sf(基准面=NA)+
比例填充梯度(name=“%Population Infected”,trans=“log”,低='green',高='red',
na.value=“白色”,
中断=c(0,循环(最大值(pop_县_cov$infRate),3)))+
地理点(数据=AFMCbases,aes(x=经度.1,y=纬度.1,尺寸=人员),color=“hotpink”)+
#地理标签排斥(数据=AFMCbases,aes(x=经度.1,y=纬度.1,标签=基准))+
主题_bw()+
实验室(大小='AFMC\nMil+Civ')+
主题(legend.position=“bottom”,
panel.border=元素_blank(),
axis.title.x=元素_blank(),
axis.title.y=元素_blank())
例如,它生成的最终帧是

另一方面,该代码:

p <- mw_pop_counties_cov %>%
  ggplot() +
  geom_sf(mapping = aes(fill = infRate, geometry=geometry), color = NA) +
  geom_sf(data = mw_states_sf, fill = NA, color = "black", size = 0.25) +
  coord_sf(datum = NA) +   
  scale_fill_gradient(name = "% Population Infected", trans = "log", low='green', high='red',
                      na.value = "white",
                      breaks=c(0, round(max(mw_pop_counties_cov$infRate),3))) +
  geom_point(data=mwBases, aes(x=longitude.1, y=latitude.1,size=personnel), color = "hotpink") +
  #geom_label_repel(data=AFMCbases, aes(x=longitude.1, y=latitude.1, label=Base)) +
  theme_bw() + 
  labs(size='AFMC \nMil + Civ') +
  theme(legend.position="bottom", 
        panel.border = element_blank(),
        axis.title.x=element_blank(), 
        axis.title.y=element_blank())
p%
ggplot()+
geom_sf(映射=aes(填充=红外线,几何=几何),颜色=NA)+
geom_sf(数据=mw_状态_sf,填充=NA,颜色=“黑色”,尺寸=0.25)+
坐标sf(基准面=NA)+
比例填充梯度(name=“%Population Infected”,trans=“log”,低='green',高='red',
na.value=“白色”,
中断=c(0,轮(最大值(mw\u pop\u Countries\u cov$infRate),3))+
geom_点(数据=MWbase,aes(x=经度.1,y=纬度.1,尺寸=人员),color=“hotpink”)+
#地理标签排斥(数据=AFMCbases,aes(x=经度.1,y=纬度.1,标签=基准))+
主题_bw()+
实验室(大小='AFMC\nMil+Civ')+
主题(legend.position=“bottom”,
panel.border=元素_blank(),
axis.title.x=元素_blank(),
axis.title.y=元素_blank())
这是相同的,除了数据帧已被过滤到只有中西部各州,生产

请注意色标的外观

是不是因为我盯着这个看太久了,所以我没有看到一些打字错误?
我的脚本生成了5个动画,每个动画用于国家地图,然后是4个普查区域(东北部、中西部、南部和西部)。颜色比例显示在西部和中西部地图上,但其他三个地图上没有。这是尽管事实,我基本上只是剪切和粘贴,然后改变了数据帧的名称


我做错了什么?我希望颜色比例显示在所有地图上。

结果表明,问题确实出现在输出绘图的水平空间上。只需将缩放标题从

scale_fill_gradient(name = "% Population Infected",...

注意换行符
\n

输出贴图现在有了我想要的颜色比例


您是否尝试在
geom\u sf
中通过
show.legend=FALSE
?你能提供一个可复制的数据集示例吗?我明白了。很抱歉理解错误。@Manu在每种情况下,我都是根据检测呈阳性的人口百分比对每个县进行颜色编码,所以不管怎样,范围都是[0,1]。但对于量表,我在各自的数据框中使用了最大感染率。例如,在中西部地图中,它是
breaks=c(0,轮(max(mw_pop_县_cov$infRate),3))
+所以我取中西部县的最高费率,而在全国地图中它是
breaks=c(0,轮(max(pop_县_cov$infRate),3))
所以它是所有县的最高费率。日志转换只是因为数据非常倾斜…我不是指值的舍入,而是地图上的物理水平空间。如果您将渐变名称从
%Population Infected
更改为
%PI
,只是想尝试一下这是否是问题所在,那么您也可以在第一个绘图上匹配比例。@Tjebo感谢您提供关于
reprex
的信息,我会查看它。对我来说,最大的问题是,我几乎是手工把县人口数据放在一起,因为我必须手动修复一大堆数据,以确保数据源之间的一致性。就像一个数据源中的“纽约市”和另一个数据源中的“纽约市”。至于最初的问题,一个简单的解决方案是在比例标签中添加一个换行符。一旦我做了
scale\u fill\u gradient(name=“%Population\n inInfected”…
它工作得很好
scale_fill_gradient(name = "% Population \nInfected",