ggplot2饼图,数字不出现
ggplot2 pie chart, numbers don't appear
我是数据可视化方面的新手,在 R 中使用 ggplot2。我正在尝试在饼图中可视化一些数据。我使用的代码是这样的:
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) 如何在正确的位置正确可视化标签?
提前致谢。
为了得到你想要的,你可以在以下几点调整你的代码:
- 将
aes
移动到ggplot()
部分
- 从
geom_text
中的 aes
中删除 x
和 y
规范
- 将
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")
我是数据可视化方面的新手,在 R 中使用 ggplot2。我正在尝试在饼图中可视化一些数据。我使用的代码是这样的:
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) 如何在正确的位置正确可视化标签?
提前致谢。
为了得到你想要的,你可以在以下几点调整你的代码:
- 将
aes
移动到ggplot()
部分 - 从
geom_text
中的 - 将
position = position_stack(vjust = 0.5)
添加到geom_text
aes
中删除 x
和 y
规范
最终代码:
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")