首页 > 解决方案 > ggplot2:如何在角度为 0 度的圆形 360 度条形图中显示数据点?

问题描述

我得到了一个圆形 360 度条形图,我需要在其中手动指定每个条形的角度(数字 x 轴)。一般来说,除了角度分别为 0 的数据点之外,绘图工作正常。360度。此行被移除且未绘制,即使条形宽度为 1。

为什么会这样?如何绘制中心值为 0 且条宽为 20 的条(从 -10 到 350 度到 10 度)?

谢谢!

MWE:

library(tidyverse)

# dummy data
data <- data.frame(
  variable = c(0, 90, 180, 270), 
  value = c(50, 100, 150, 200))

# plot
ggplot(data, aes(x = variable, y = value, fill = factor(variable))) +
  geom_col(width = 20)  + # Even with a widh of 1 the first datapoint is removed from the plot.
  scale_x_continuous(breaks = seq(from=0, to=359, by=10),  limits=c(0, 360)) +
  coord_polar(start = 0)

标签: rggplot2

解决方案


我看不到一个简单的通用解决方案来绘制跨越极坐标环绕点的条形图,但是很容易改变限制和起点以获得所需的效果:

ggplot(data, aes(x = variable, y = value, fill = factor(variable))) +
  geom_col(width = 20)  + 
  scale_x_continuous(breaks = seq(0, 359, by = 10), limits = c(-10, 350)) +
  coord_polar(start = -pi/18, clip = "off")

在此处输入图像描述

显然,如果您尝试在 350 到 359 度之间而不是 0 到 9 度之间绘制条形图,现在这会导致问题,但是假设您不希望任何条形重叠,我猜这不是问题。


推荐阅读