Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何抖动/消除geom_文本标签的重叠_R_Ggplot2_Geom Text - Fatal编程技术网

R 如何抖动/消除geom_文本标签的重叠

R 如何抖动/消除geom_文本标签的重叠,r,ggplot2,geom-text,R,Ggplot2,Geom Text,在图中,是否可以稍微抖动州缩写标签,使其不重叠?如果我使用check\u overlap=TRUE,那么它会删除一些重叠的观察结果,我不希望这样。我也不希望使用geom_标签_repel,因为它的标签会突出并在我包含的45度线上移动(我不希望发生这种情况) 以下是我的代码的相关部分供参考: ggplot(df, aes(x = huff_margin_dem, y = margin16dem_state, label = abbrev)) + geom_abline(intercept =

在图中,是否可以稍微抖动州缩写标签,使其不重叠?如果我使用
check\u overlap=TRUE
,那么它会删除一些重叠的观察结果,我不希望这样。我也不希望使用
geom_标签_repel
,因为它的标签会突出并在我包含的45度线上移动(我不希望发生这种情况)

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

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

您是否尝试过
position=position\u jitter()
?您可以根据自己的选择调整
宽度
高度

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

df$jit我想我应该指出,
ggrepel::geom_text_repel
会满足您的需求。考虑到您的示例中的一些文本已经与行重叠,我想可能是
geom\u label\u repel
中的
标签部分,您不喜欢,因为它会放置在文本后面的背景,阻塞行

以您的例子:

ggplot(df) +
  geom_text_repel(aes(x = huff_margin_dem, 
                      y = margin16dem_state, 
                      label = abbrev))

没有它是不可能直接帮助你的。不过,您应该更仔细地查看
ggrepel
以查看标签移动的控制。谢谢!你知道有没有办法抖动特定的文本,而不仅仅是所有的文本?例如,在上面的图像示例中,是否有一种方法可以使用“KS”和“LA”文本抖动观测值,但不抖动其他观测值?同意!虽然ggplot()中的美学可能更容易理解,就像其他示例一样:ggplot(df,aes(x=huff_margin_dem,y=margin16dem_state,label=abbrev))+geom_text_repel()在我的实验中,与操作position=position\u jitter()的参数(后者出现在前面的答案中)相比,geom\u text\u repel在整洁地呈现非重叠标签方面做得更好。