ggplot R中的圆形条形图

时间:2020-09-09 14:50:39

标签: r ggplot2

我正在尝试为简单数据创建圆形条形图。 R Graph Gallery 为此提供了很好的参考:https://www.r-graph-gallery.com/296-add-labels-to-circular-barplot.html

我是我的数据框结构(来自dput(data)):

structure(list(month = c("Jan", "Feb", "Mar", "Apr", "Dec"), 
    n = c(333, 557, 98, 545, 654), id = 1:5), class = "data.frame", row.names = c(NA, 
-5L))

我无法正确躲避杠铃。我想使用另一个名为 paystatus 的分类变量来躲避杠,它假定三个值: early ontime late < / em>。

谢谢。

2 个答案:

答案 0 :(得分:0)

类似

dataframe %>%
   ggplot(aes(x = id, y = n) + 
   geom_bar() +
   coord_polar()

但不知道确切要做什么...

答案 1 :(得分:0)

欢迎堆积Surbhi Mishra。

我试图从您与我们分享的 R Graph Gallery 中复制示例。但是下次尝试对此进行详细说明。它可以帮助我们帮助您...:)

让我开始追逐。我无法使用 paystatus ,因为您尚未共享数据,但我认为您可能想要这样的东西:

# setup environment
library(tidyverse)
# create dataframe
data = data.frame(
  month = c('Jan', 'Feb', 'Mar', 'Apr', 'Dec'),
  n = c(333, 557, 98, 545, 654),
  id = 1:5
)
# define labels
nrows = nrow(data)
angle =  90 - 360*(data$id - 0.5)/nrows
label = data
label$hjust = ifelse(angle < -90, 1, 0)
label$angle = ifelse(angle < -90, angle + 180, angle)
# plot
ggplot(data, aes(x = as.factor(id), y = n)) +
  geom_bar(stat = "identity", fill = alpha("skyblue", 0.7)) +
  ylim(-200, 700) +
  theme_minimal() +
  theme(
    axis.text = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank(),
    plot.margin = unit(rep(-1, 4), "cm")) +
  coord_polar(start = 0) +
  geom_text(data = label, aes(x = id, y = n + 10, label = month, hjust = hjust),
            color = "black", fontface = "bold", alpha = 0.6, size = 4,
            angle = label$angle, inherit.aes = FALSE)

以下是输出:

enter image description here

请,让我们知道您是否正在寻找