去除极坐标图边缘的额外空间和环形线。

16

我在使用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
1个回答

20

额外的空间是由panel.grid的最外层圆圈生成的。该网格默认添加在您使用的主题中(以及大多数其他ggplot主题; 默认设置在此处)。

因此,在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())

在此输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接