31

数字

在图中,是否可以稍微抖动一下状态缩写标签,以免它们重叠?如果我使用check_overlap = TRUE,那么它会删除一些重叠的观察结果,我不希望这样。我也不想要geom_label_repel,因为它的标签伸出并穿过我包含的 45 度线(我不想发生这种情况)

这是我的代码的相关部分供参考:

ggplot(df, aes(x = huff_margin_dem, y = margin16dem_state, label = abbrev)) +
  geom_abline(intercept = 0) +
  geom_text(fontface = "bold")
4

2 回答 2

34

你试过position=position_jitter()吗?您可以根据自己的选择调整width和。height

ggplot(df, aes(x = huff_margin_dem, y = margin16dem_state, label = abbrev)) +
  geom_abline(intercept = 0) +
  geom_text(fontface = "bold",position=position_jitter(width=1,height=1))

编辑 仅操作某个标签的示例

+geom_text(fontface = "bold",
position=position_jitter(width=ifelse(df$abbrev=='KS',1,0),
      height=ifelse(df$abbrev=='KS',1,0)))

或多个标签

df$jit<-with(df, ifelse(abbrev == "KS" | abbrev == "LA", 1, 2))

+geom_text(fontface = "bold",
    position=position_jitter(width=df$jit,height=df$jit))
于 2016-11-11T22:51:02.563 回答
30

只是想我会指出这ggrepel::geom_text_repel会做你所追求的。考虑到您示例中的某些文本已经与该行重叠,我认为这可能是您不喜欢的label部分,因为它会放置在您的文本后面,阻塞该行。geom_label_repel

使用您的示例:

ggplot(df) +
  geom_text_repel(aes(x = huff_margin_dem, 
                      y = margin16dem_state, 
                      label = abbrev))
于 2018-11-15T07:32:29.027 回答