geom_bar和geom_linerange之间的技术差异

geom_bar和geom_linerange之间的技术差异,r,ggplot2,R,Ggplot2,在试验ggplot2时,我注意到geom_bar/geom_col和geom_linerange之间的图形输出存在差异。当我将这些函数与coord_polar(创建饼图或圆环图)结合使用时,前两个输出将被像素化,而geom_linerange将生成平滑的线条 我同意。我仍然想知道,在创建输出的过程中,为什么会出现这种差异,以及在何处出现这种差异 d <- dplyr::tibble(GRP=c("A","B","C"),

在试验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)
d%
ggplot2::ggplot(ggplot2::aes(x=0,ymin=ymin,ymax=ymax,color=GRP))+
ggplot2::几何图形线范围(尺寸=7)+
ggplot2::坐标(theta=“y”)+
ggplot2::ggtitle(“几何图形线范围”)+
ggplot2::主题_void()
gridExtra::grid.arrange(p1、p2、p3)

我确实看到我的Windows server机器与最新的R和ggplot2有所不同。这是我的初步结果:

您可以看到,在顶部的两个面中几乎没有抗锯齿,但在最后一个面中有更好的平滑效果

不同之处在于(至少在某些设备上)多边形填充不是抗锯齿的,而是线段。为了演示这一点,只需在前两个面中的线段周围添加一个白色轮廓(通过将
color=“white”
添加到
geom_bar
调用),圆圈就会变得平滑:


在我的机器上,使用
RStudio v 1.2.1335
R v 4.0.2
ggplot2 v 3.3.2
的绘图查看器,我看到了一个不同。
geom_linerange
绘图生成的代码频带比其他两个窄。而且,它们看起来都不是像素化的。。。感谢您的见解和解决方法。