代码之家  ›  专栏  ›  技术社区  ›  BaseballR

删除极坐标图(ggplot2)的最外环[重复]

  •  0
  • BaseballR  · 技术社区  · 7 年前

    以下是可复制代码:

    library(ggplot2)
    
    perc_df=data.frame(id=c(125,126,127,128,129,130),percentile=c(.50,.75,.99,.27,.12,.66))
    
    cxc <- ggplot(perc_df, aes(x = id)) +
      geom_bar(width = 1, aes(weight = percentile, fill = ..count..)) +
      scale_y_continuous(limits = c(0,1),breaks=seq(0, 1, .25),expand=c(0,0)) +
      scale_fill_gradient2(low = 'red', high = 'green',mid='yellow', limits=c(0,1),midpoint=.5,guide = "colourbar")
    
    cxc + coord_polar(theta = 'x',start = 2.6)+ guides(fill=FALSE) +
      theme(axis.title.x=element_blank(),axis.text.x=element_blank(),axis.ticks.x=element_blank(),axis.title.y=element_blank(),
            axis.text.y=element_blank(),axis.ticks.y=element_blank(),plot.title = element_text(lineheight=.8, face="bold",hjust = 0.5),
            panel.border = element_blank())
    

    这就是所产生的:

    radar

    这非常接近,但我们希望1的百分位位于绘图的最后一个圆,而不是绘图的外圈。

    Remove extra space and ring at the edge of a polar plot

    1 回复  |  直到 7 年前
        1
  •  3
  •   pogibas    7 年前

    这个问题的答案很简单。你必须添加 geom_hline geom_bar geom_vline 在你的例子中是有意义的,因为x轴上的变量不是数字。

    geom_hline(yintercept = seq(0, 1, by = 0.25), colour = "grey90", size = 0.2)
    

    整个代码如下所示:

    perc_df <- data.frame(id = c(125, 126, 127, 128, 129, 130), 
                          percentile = c(0.50, 0.75, 0.99, 0.27, 0.12, 0.66))
    
    library(ggplot2)
    ggplot(perc_df, aes(id)) +
        geom_hline(yintercept = seq(0, 1, by = 0.25), colour = "grey90", size = 0.2) +
        geom_bar(aes(weight = percentile, fill = ..count..), 
                 width = 1, ) +
        scale_y_continuous(limits = c(0, 1), 
                           breaks = seq(0, 1, 0.25),
                           expand = c(0, 0)) +
        scale_fill_gradient2(low = "red", mid="yellow", high = "green", 
                             limits = c(0, 1), midpoint = 0.5, 
                             guide = "colourbar") +
        coord_polar(theta = "x", start = 2.6) + 
        guides(fill = FALSE) +
        theme_bw() +
        theme(axis.title = element_blank(),
              panel.border = element_blank(),
              legend.key = element_blank(),
              axis.ticks = element_blank(),
              axis.text = element_blank(),
              panel.grid  = element_blank(),
              plot.title = element_text(lineheight = 0.8, face = "bold", 
                                        hjust = 0.5))
    

    它生成如下图:

    enter image description here