geom_bar和geom_linerange之间的技术差异
在试验ggplot2时,我注意到geom_bar/geom_col和geom_linerange之间的图形输出存在差异。当我将这些函数与coord_polar(创建饼图或圆环图)结合使用时,前两个输出将被像素化,而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"),
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
绘图生成的代码频带比其他两个窄。而且,它们看起来都不是像素化的。。。感谢您的见解和解决方法。