(更多内容请见:R、ggplot2、shiny 汇总)
library(ggplot2)
dt = data.frame(A = c(2, 7, 4, 10, 1), B = c(‘B‘,‘A‘,‘C‘,‘D‘,‘E‘))
p = ggplot(dt, aes(x = "", y = A, fill = B)) +
geom_bar(stat = "identity") +
coord_polar(theta = "y") ## 把柱状图折叠成饼图(极坐标)
p
library(ggplot2)
dt = data.frame(A = c(2, 7, 4, 10, 1), B = c(‘B‘,‘A‘,‘C‘,‘D‘,‘E‘))
p = ggplot(dt, aes(x = "", y = A, fill = B)) +
geom_bar(stat = "identity", width = 1) + ## width >= 1 时中心的杂点将消失
coord_polar(theta = "y")
p
library(ggplot2)
dt = data.frame(A = c(2, 7, 4, 10, 1), B = c(‘B‘,‘A‘,‘C‘,‘D‘,‘E‘))
p = ggplot(dt, aes(x = "", y = A, fill = B)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
labs(x = "", y = "", title = "") ## 将标签设为空
p
library(ggplot2)
dt = data.frame(A = c(2, 7, 4, 10, 1), B = c(‘B‘,‘A‘,‘C‘,‘D‘,‘E‘))
p = ggplot(dt, aes(x = "", y = A, fill = B)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
labs(x = "", y = "", title = "") +
theme(axis.ticks = element_blank()) ## 把左上角多出来的“小胡子”去掉
p
library(ggplot2)
dt = data.frame(A = c(2, 7, 4, 10, 1), B = c(‘B‘,‘A‘,‘C‘,‘D‘,‘E‘))
p = ggplot(dt, aes(x = "", y = A, fill = B)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
labs(x = "", y = "", title = "") +
theme(axis.ticks = element_blank()) +
theme(legend.title = element_blank(), legend.position = "top") ## 将图例标题设为空,并把土方放在上方
p
library(ggplot2)
dt = data.frame(A = c(2, 7, 4, 10, 1), B = c(‘B‘,‘A‘,‘C‘,‘D‘,‘E‘))
myLabel = as.vector(dt$B) ## 转成向量,否则图例的标签可能与实际顺序不一致
myLabel = paste(myLabel, "(", round(dt$A / sum(dt$A) * 100, 2), "%) ", sep = "") ## 用 round() 对结果保留两位小数
p = ggplot(dt, aes(x = "", y = A, fill = B)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
labs(x = "", y = "", title = "") +
theme(axis.ticks = element_blank()) +
theme(legend.title = element_blank(), legend.position = "top") +
scale_fill_discrete(breaks = dt$B, labels = myLabel) ## 将原来的图例标签换成现在的myLabel
p
library(ggplot2)
dt = data.frame(A = c(2, 7, 4, 10, 1), B = c(‘B‘,‘A‘,‘C‘,‘D‘,‘E‘))
dt = dt[order(dt$A, decreasing = TRUE),] ## 用 order() 让数据框的数据按 A 列数据从大到小排序
myLabel = as.vector(dt$B)
myLabel = paste(myLabel, "(", round(dt$A / sum(dt$A) * 100, 2), "%) ", sep = "")
p = ggplot(dt, aes(x = "", y = A, fill = B)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
labs(x = "", y = "", title = "") +
theme(axis.ticks = element_blank()) +
theme(legend.title = element_blank(), legend.position = "top") +
scale_fill_discrete(breaks = dt$B, labels = myLabel)
p
library(ggplot2)
dt = data.frame(A = c(2, 7, 4, 10, 1), B = c(‘B‘,‘A‘,‘C‘,‘D‘,‘E‘))
dt = dt[order(dt$A, decreasing = TRUE),] ## 用 order() 让数据框的数据按 A 列数据从大到小排序
myLabel = as.vector(dt$B)
myLabel = paste(myLabel, "(", round(dt$A / sum(dt$A) * 100, 2), "%) ", sep = "")
p = ggplot(dt, aes(x = "", y = A, fill = B)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
labs(x = "", y = "", title = "") +
theme(axis.ticks = element_blank()) +
theme(legend.title = element_blank(), legend.position = "top") +
scale_fill_discrete(breaks = dt$B, labels = myLabel) +
theme(axis.text.x = element_blank()) ## 白色的外框即是原柱状图的X轴,把X轴的刻度文字去掉即可
p
library(ggplot2)
dt = data.frame(A = c(2, 7, 4, 10, 1), B = c(‘B‘,‘A‘,‘C‘,‘D‘,‘E‘))
dt = dt[order(dt$A, decreasing = TRUE),]
myLabel = as.vector(dt$B)
myLabel = paste(myLabel, "(", round(dt$A / sum(dt$A) * 100, 2), "%)", sep = "")
p = ggplot(dt, aes(x = "", y = A, fill = B)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
labs(x = "", y = "", title = "") +
theme(axis.ticks = element_blank()) +
theme(legend.title = element_blank(), legend.position = "top") +
scale_fill_discrete(breaks = dt$B, labels = myLabel) +
theme(axis.text.x = element_blank()) +
geom_text(aes(y = A/2 + c(0, cumsum(A)[-length(A)]), x = sum(A)/20, label = myLabel), size = 5) ## 在图中加上百分比:x 调节标签到圆心的距离, y 调节标签的左右位置
p
library(ggplot2)
dt = data.frame(A = c(2, 7, 4, 10, 1), B = c(‘B‘,‘A‘,‘C‘,‘D‘,‘E‘))
dt = dt[order(dt$A, decreasing = TRUE),]
myLabel = as.vector(dt$B)
myLabel = paste(myLabel, "(", round(dt$A / sum(dt$A) * 100, 2), "%)", sep = "")
p = ggplot(dt, aes(x = "", y = A, fill = B)) +
geom_bar(stat = "identity", width = 0.3) + ## 当width < 1 时饼图将变成饼环
coord_polar(theta = "y") +
theme_bw() +
labs(x = "", y = "", title = "") +
theme(axis.ticks = element_blank()) +
theme(legend.position = "none") +
theme(axis.text.x = element_blank()) +
geom_text(aes(y = A/2 + c(0, cumsum(A)[-length(A)]), x = sum(A)/24, label = myLabel), size = 5)
p
版权声明:转载请注明出处,谢谢!
原文地址:http://blog.csdn.net/bone_ace/article/details/47455363