31

使用 geom_text 打印的文字不是很清楚。我怎样才能让它更清楚?

data = data.frame(rnorm(1000))
colnames(data) = "numOfX"
m <- ggplot(data, aes(x=numOfX))
m + geom_histogram(colour = "blue", fill = "white", binwidth = 0.5) +
  annotate("segment", x=10,xend=10,y=20,yend=0,arrow=arrow(), color="blue") +
  geom_text(aes(10, 30, label="Observed \n value"), color = "blue") 

在此处输入图像描述

4

2 回答 2

46

用于annotate文本和箭头:

m + geom_histogram(colour = "blue", fill = "white", binwidth = 0.5) +
  annotate("segment", x=10,xend=10,y=20,yend=0,arrow=arrow(), color="blue") +
  annotate("text", x=10, y=30, label="Observed \n value", color = "blue")

在此处输入图像描述


原因是geom_text为数据框中的每一行数据annotate绘制了文本,而只绘制了一次文本。正是这种过度绘制导致了粗体、像素化的文本。

我相信这个问题最近得到了回答。我会尝试找到一个参考: 最近有人问了一个类似的问题:

于 2012-07-23T18:55:22.170 回答
0

扩展 Dave Gruenewald 的评论,geom_text现在可以check_overlap选择。请参阅tidyverse 参考

check_overlap-- 如果TRUE,则不会绘制与同一层中先前文本重叠的文本。check_overlap发生在绘制时间和数据的顺序。因此调用前应按标签列排列数据geom_text()。请注意,此参数不受geom_label().

library(ggplot2)
data = data.frame(rnorm(1000))
colnames(data) = "numOfX"
m <- ggplot(data, aes(x=numOfX))
m + geom_histogram(colour = "blue",
                   fill = "white",
                   binwidth = 0.5) +
  annotate("segment",
           x = 10, xend = 10,
           y = 20, yend = 0,
           arrow = arrow(), color="blue") +
  geom_text(aes(10, 30, label="Observed \n value"),
            color = "blue", check_overlap = T)

在此处输入图像描述

于 2021-10-10T23:46:43.900 回答