1

当我使用 geom_segment 时,它与 geom_abline 相比是像素化的。当我使用 ggsave 导出到 pdf 时,它没有被矢量化。

geom_abline :

在此处输入图像描述

geom_segment:

在此处输入图像描述

知道如何解决这个问题吗?

谢谢

4

1 回答 1

2

是的,简短的回答:使用annotate()而不是geom_segment().

Long(er) 答案,无论您使用什么geom_segment(),您都将数据中的每一行映射到几何图形的美学(在本例中为坐标)。因此,它们的 PDF 来自彼此重叠的geom_segment()包含nrow(your_data)行,给人以像素化的印象。

如果您检查绘图的图层数据,您会看到这种情况。特别注意第二个图的图层数据。

library(ggplot2)

defaults <- list(
  coord_cartesian(expand = FALSE),
  theme(axis.line = element_line(colour = "black"))
)


g <- ggplot(iris, aes(x, y)) +
  geom_abline(intercept = 0, slope = 1) +
  defaults
(layer_data(g))
#>   intercept slope PANEL group colour size linetype alpha
#> 1         0     1     1    -1  black  0.5        1    NA

g <- ggplot(iris, aes(x, y)) +
  geom_segment(x = 0, xend = 1, 
               y = 0, yend = 1) +
  defaults
(head(layer_data(g)))
#>   PANEL group colour size linetype alpha x y xend yend
#> 1     1    -1  black  0.5        1    NA 0 0    1    1
#> 2     1    -1  black  0.5        1    NA 0 0    1    1
#> 3     1    -1  black  0.5        1    NA 0 0    1    1
#> 4     1    -1  black  0.5        1    NA 0 0    1    1
#> 5     1    -1  black  0.5        1    NA 0 0    1    1
#> 6     1    -1  black  0.5        1    NA 0 0    1    1

g <- ggplot(iris, aes(x, y)) +
  annotate("segment", x = 0, xend = 1, y = 0, yend = 1) +
  defaults
(layer_data(g))
#>   x xend y yend PANEL group colour size linetype alpha
#> 1 0    1 0    1     1    -1  black  0.5        1    NA

reprex 包(v0.3.0)于 2020 年 10 月 1 日创建

于 2020-10-01T14:50:17.667 回答