【问题标题】:ggplot2 pie chart, numbers don't appearggplot2饼图,不出现数字
【发布时间】:2018-05-19 09:44:17
【问题描述】:

我在数据可视化和带有 ggplot2 的 R 方面相当陌生。我正在尝试在饼图中可视化一些数据。我使用的代码是这样的:

percentageData <- data.frame(Year = "1987", 
                             TypeOfDelays = c(percDepDelays[1], percArrDelays[1], percAntDepdelays[1], percAntArrDelays[1]),
                             Label = factor(c("Departure delays", "Arrival Delays", "Early Departure", "Early arrival")))

labels = c("Departure delays", "Arrival Delays", "Early Departure", "Early arrival")
ggplot(data = percentageData) +
  geom_bar(aes(x="", y=TypeOfDelays, fill=Label), stat = "identity", width = 1) + 
  coord_polar(theta = "y", start = 0) +
  theme_void() +
  geom_text(aes(x = 1, y=cumsum(TypeOfDelays) - TypeOfDelays/2, label=labels))

我正在分析的数据集是这样的:flights dataset

我的问题是每年可视化每种延迟类型的延迟数量(我正在考虑 4 种类型的延迟,出发、到达、提前出发和提前到达)。

我的想法是为每一年创建一个数据框,其中包含年份、每种类型的延误次数百分比(一年中的总#delays/当年的#flights)和描述延误类型的标签。我已经计算了每种延迟类型的百分比。我想在饼图中可视化这些数据,我尝试用上面的代码创建一个饼图,结果是这样的:

所以我的问题是:

1) 为什么百分比数据没有可视化?我的代码有什么问题?

2) 如何在正确的位置正确可视化标签?

提前致谢。

【问题讨论】:

  • 我正在尝试找出您的数据:1) 您的链接的数据集中没有 百分比。你是如何计算它们的? 2) 什么是percAntDepdelayspercAntArrDelays? 3) 首先,是不是Delays,加上大写的D?请用这些疑问的答案编辑问题,不要在评论中回答。

标签: r ggplot2 pie-chart


【解决方案1】:

为了得到你想要的,你可以在以下几点调整你的代码:

  • aes 移动到ggplot() 部分
  • aes 中的geom_text 中删除xy 规范
  • position = position_stack(vjust = 0.5) 添加到geom_text

最终代码:

ggplot(data = percentageData, aes(x="", y = TypeOfDelays, fill = Label)) +
  geom_bar(stat = "identity", width = 1) + 
  geom_text(aes(label = labels), position = position_stack(vjust = 0.5)) +
  coord_polar(theta = "y", start = 0) +
  theme_void()

给出:

这些数字没有出现,因为您没有要求ggplot2 包含它们。一种可能性:

ggplot(data = percentageData, aes(x="", y = TypeOfDelays, fill = Label)) +
  geom_bar(stat = "identity", width = 1) + 
  geom_text(aes(label = paste0(labels, ': ', TypeOfDelays,' %')), position = position_stack(vjust = 0.5)) +
  coord_polar(theta = "y", start = 0) +
  theme_void()

给出:


使用过的数据:

percentageData <- data.frame(Year = "1987", 
                             TypeOfDelays = c(30, 45, 5, 20),
                             Label = factor(c("Departure delays", "Arrival Delays", "Early Departure", "Early arrival")))
labels <- c("Departure delays", "Arrival Delays", "Early Departure", "Early arrival")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2016-08-21
    • 2018-04-24
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多