繁体   English   中英

geom_bar 和 geom_linerange 之间的技术差异

[英]technical difference between geom_bar and geom_linerange

使用 ggplot2 进行试验时,我注意到 geom_bar/geom_col 和 geom_linerange 之间的图形输出存在差异。 一旦我将这些函数与 coord_polar(创建饼图或圆环图)结合使用,前两个输出就会被像素化,而 geom_linerange 会产生平滑的线条。

我很好。 我仍然想知道为什么以及在创建输出的过程中会出现这种差异?

d <- dplyr::tibble(GRP=c("A","B","C"),
                   VAL=c(20,30,50))

p1 <- d %>%
    ggplot2::ggplot(ggplot2::aes(x=2,y=VAL,fill=GRP)) +
    ggplot2::geom_bar(width=1.5,stat="identity") +
    ggplot2::coord_polar(theta="y") +
    ggplot2::ggtitle("geom_bar") +
    ggplot2::xlim(c(0,4)) +
    ggplot2::theme_void()

p2 <- d %>%
    ggplot2::ggplot(ggplot2::aes(x=2,y=VAL,fill=GRP)) +
    ggplot2::geom_col(width=1.5) +
    ggplot2::coord_polar(theta="y") +
    ggplot2::ggtitle("geom_col") +
    ggplot2::xlim(c(0,4))  +
    ggplot2::theme_void()

p3 <- d %>%
    dplyr::mutate(YMAX=cumsum(VAL),
                  YMIN=dplyr::lag(YMAX,1,default=0)) %>%
    ggplot2::ggplot(ggplot2::aes(x=0,ymin=YMIN,ymax=YMAX,color=GRP)) +
    ggplot2::geom_linerange(size=7) +
    ggplot2::coord_polar(theta="y")  +
    ggplot2::ggtitle("geom_Linerange") +
    ggplot2::theme_void()

gridExtra::grid.arrange(p1,p2,p3)

我确实在装有最新 R 和 ggplot2 的 Windows 服务器机器上看到了不同之处。 这是我的初步结果:

在此处输入图片说明

您可以看到前两个方面几乎没有或没有抗锯齿,但最后一个方面的平滑效果要好得多。

区别似乎在于(至少在某些设备上)多边形填充没有抗锯齿,但线段是抗锯齿的。 为了证明这一点,只需在前两个方面的线段周围添加一个白色轮廓(通过在geom_bar调用中添加colour = "white" ),圆圈就会变得平滑:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM