【问题标题】:Remove extra space and ring at the edge of a polar plot移除极坐标图边缘的多余空间和环形
【发布时间】:2013-12-27 21:22:25
【问题描述】:

我在ggplot2 中有一个极坐标图,我即将完成(相当简单的图)。我已经能够在移除矩形边界方面获得帮助,但我不需要移除最后一个范围轮廓和带有方位角标签的图周围的环之间的额外空间。我希望这个地块的范围是 15,000……而不是 15,214(我编了这个数字)。感谢您的帮助。

生成绘图的代码如下:

# Load needed Libraries ---------------------------------------------------

library(ggplot2)

# Generate Fake Data ------------------------------------------------------

N    = 25
bng  = runif(N, min =  0, max = 360)
rng  = rlnorm(N, meanlog = 9, sdlog = 1)
det  = runif(N, min = 0, max = 1) >= 0.5

det  = factor(det)

data = data.frame(bng, rng, det)

# Generate the Plot -------------------------------------------------------

plot = ggplot(data) + theme_bw() +
  geom_point(aes(x = bng, y = rng, color = det), size = 5, alpha = 0.7) +
  scale_x_continuous(limits = c(0,360), expand = c(0,0), breaks = seq(0,360-1, by=45)) +
  scale_y_continuous(limits = c(0,15000), breaks = seq(0,15000, by = 3000)) +
  coord_polar(theta = 'x', start = 0, direction = 1) +
  theme(legend.key = element_blank()) +
  theme(panel.border = element_blank(), axis.ticks = element_blank(), axis.text.y = element_blank()) +
  labs(x = '', y = '') +
  scale_color_manual(name = '', values = c('red', 'black'), breaks = c(FALSE, TRUE), labels = c('Not Detected', 'Detected'))
plot

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    额外的空间是由panel.grid 的最外圈产生的。默认情况下,网格会添加到您使用过的theme 中(以及大多数其他ggplot 主题;default settings here

    因此,删除theme 中的panel.grid。然后,您可以根据口味创建自己的网格,例如使用geom_hlinegeom_vline。在这里,我使用了您在 scale_x_y 中指定的中断作为截距。我从theme_bw 中的默认panel.grid.major 中选择了线条颜色和大小。

    ggplot(data = df) +
      geom_point(aes(x = bng, y = rng, color = det), size = 5, alpha = 0.7) +
      geom_hline(yintercept = seq(0, 15000, by = 3000), colour = "grey90", size = 0.2) +
      geom_vline(xintercept = seq(0, 360-1, by = 45), colour = "grey90", size = 0.2) +
      coord_polar(theta = 'x', start = 0, direction = 1) +
      labs(x = '', y = '') +
      scale_color_manual(name = '',
                         values = c('red', 'black'),
                         breaks = c(FALSE, TRUE),
                         labels = c('Not Detected', 'Detected')) +
      scale_x_continuous(limits = c(0, 360), expand = c(0, 0), breaks = seq(0, 360-1, by = 45)) +
      scale_y_continuous(limits = c(0, 15000), breaks = seq(0, 15000, by = 3000)) +
      theme_bw() +
      theme(panel.border = element_blank(),
            legend.key = element_blank(),
            axis.ticks = element_blank(),
            axis.text.y = element_blank(),
            panel.grid  = element_blank())
    

    【讨论】: