当我使用 geom_segment 时,它与 geom_abline 相比是像素化的。当我使用 ggsave 导出到 pdf 时,它没有被矢量化。
geom_abline :
geom_segment:
知道如何解决这个问题吗?
谢谢
当我使用 geom_segment 时,它与 geom_abline 相比是像素化的。当我使用 ggsave 导出到 pdf 时,它没有被矢量化。
geom_abline :
geom_segment:
知道如何解决这个问题吗?
谢谢
是的,简短的回答:使用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 日创建