簡體   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