web-dev-qa-db-ja.com

geom_textラベルのオーバーラップをジッター/除去する方法

Figure

図では、重複しないように状態の略語ラベルを少し揺らすことは可能ですか? 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")
14

position=position_jitter()を試しましたか? widthheightを選択して調整できます。

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))

[〜#〜] edit [〜#〜]特定のラベルのみを操作する例

+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))
14
J.Con

_ggrepel::geom_text_repel_があなたが望んでいることをすることを指摘したいと思いました。あなたの例のテキストの一部がすでに行と重複していることを考えると、おそらくあなたが嫌い​​なのは_geom_label_repel_のlabel部分で、テキストの背後に配置される背景のために、ラインをブロックします。

あなたの例を使用して:

_ggplot(df) +
  geom_text_repel(aes(x = huff_margin_dem, 
                      y = margin16dem_state, 
                      label = abbrev))
_
8
conor