首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调整ggrepel标签

调整ggrepel标签
EN

Stack Overflow用户
提问于 2020-06-05 22:57:07
回答 1查看 435关注 0票数 0

我有一个脚本,可以下载一些空军基地周围地区的COVID数据,并生成一个图表。我本来打算用一个大的dput()来复制它,但是对于一个帖子来说,它的字符太多了。可以从这里复制再现数据帧的dput()。

数据本身看起来就像

代码语言:javascript
运行
复制
head(smDailyBaseData)

DaysSince Base    abbv          newRate label         
  <drtn>    <chr>   <chr>           <dbl> <chr>         
1  7 days   Edwards EdwardsAFB 0          "Edwards \n 0"
2  8 days   Edwards EdwardsAFB 0.00000140 "Edwards \n 2"
3  9 days   Edwards EdwardsAFB 0.00000140 "Edwards \n 0"
4 10 days   Edwards EdwardsAFB 0.00000140 "Edwards \n 0"
5 11 days   Edwards EdwardsAFB 0.00000140 "Edwards \n 0"
6 12 days   Edwards EdwardsAFB 0.00000140 "Edwards \n 0"

737行..。

情节代码是

代码语言:javascript
运行
复制
#endpoint layer
BaseEndpoints <- smDailyBaseData %>% 
  group_by(Base) %>%
  filter(DaysSince == max(DaysSince)) %>%
  select(Base, abbv, DaysSince, newRate,label) %>%
  ungroup()

ZoomEndpoints <- BaseEndpoints %>% filter(Base != 'Hanscom') %>%
  mutate(zoom = TRUE)

MAEndPoint <- BaseEndpoints %>% filter(Base == 'Hanscom') %>%
  mutate(zoom = FALSE)

ZoomEndpoints <- rbind(ZoomEndpoints, MAEndPoint)

BasePlot <- smDailyBaseData %>% 
  ggplot(mapping = aes(x = as.numeric(DaysSince), y = newRate)) +
  geom_line(aes(color=abbv),show.legend = FALSE) +
  scale_color_ucscgb() +
  geom_point(data = BaseEndpoints,size = 1.5,shape = 21, 
             aes(color = abbv,fill = abbv), show.legend = FALSE) +
  geom_label_repel(data=ZoomEndpoints, aes(label=label), show.legend = FALSE,
                   vjust = 0) +
  labs(x = "Days Since First Confirmed Case", 
       y = "% Local Population Infected Daily") +
  theme(plot.title = element_text(size = rel(1), face = "bold"),
        plot.subtitle = element_text(size = rel(0.7)),
        plot.caption = element_text(size = rel(1))) +

  facet_zoom(xlim = c(50,130), ylim=c(0,0.0075),zoom.data=zoom)



print(BasePlot)

结果就是这个阴谋

尽管如此,它还是很拥挤,标签覆盖了大量的数据。我想让所有的标签排列在变焦图的右边,所有的空格都是(例如,x轴上的120以上),然后它们就可以有更长的线连接到端点。但我没能做到这一点。我尝试过将direction润湿到y,并使用hjust描述的这里,但是不要得到我要寻找的距离或对齐方式。

如有任何指导,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-06 06:38:04

您正在寻找xlim=ylim=参数在geom_label_repel()中。它们的工作方式与轴心限制相同,但它们是“排斥”标签的限制。您可以稍微玩一玩,但以下是将该行更改为“阅读”后的结果:

代码语言:javascript
运行
复制
geom_label_repel(data=ZoomEndpoints, aes(label=label), show.legend = FALSE,
                   vjust = 0, xlim=c(100,120), size=3, direction = 'y')

您的里程可能有所不同,因为输出取决于图形设备的分辨率和纵横比。

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

https://stackoverflow.com/questions/62225251

复制
相关文章

相似问题

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