[R]ggplot2 环形图制作

外圈

library(xlsx)
setwd("D:/R")
mydata <- read.xlsx2("条形图.xlsx",1)
mydata$面积 <- as.numeric(mydata$面积)
mydata$百分比 <- as.numeric(mydata$百分比)
library(reshape2)
mydata <- mydata[order(mydata$面积,decreasing = F),]
#横坐标排序
mydata$省份 <- factor(mydata$省份,levels = c("宁夏","黑龙江","广西","山东","四川","河北","甘肃", "贵州","湖南","云南"),labels =c("宁夏 74万亩","黑龙江 141万亩","广西 150万亩","山东 180万亩","四川 186万亩","河北 250万亩","甘肃 160万亩", "贵州 660万亩","湖南 794万亩","云南 794万亩"))
library(ggplot2)
#自定义颜色
color=c( 'gray', '#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462', '#B3DE69', '#FCCDE5',  '#CCEBC5')
#先得到柱形图
p <- ggplot(mydata, aes(x = 省份, y = 面积, fill = 省份)) + 
  geom_bar(stat = 'identity', width = 0.8) +
  scale_fill_manual(values = color[1:length(unique(mydata$省份))]) +
  theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), plot.title = element_text(hjust = 0.5)) +
  labs(x = '', y = '')+
  guides(fill=guide_legend(title=NULL))
  #+geom_text(aes(label = 面积), size = 3, hjust = 0.5, vjust = 3, position = "stack")
p
#再经极坐标系变换得到圆环图
a <- p + coord_polar(theta = 'y')
a
#p + coord_polar(theta = 'x')

内圈

library(reshape2)
mydata <- mydata[order(mydata$面积,decreasing = F),]
mydata$省份 <- factor(mydata$省份,levels = c("云南","湖南","贵州","甘肃","河北","四川","山东","广西","黑龙江","宁夏"))
library(ggplot2)
#自定义颜色
color=c( 'gray', '#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462', '#B3DE69', '#FCCDE5',  '#CCEBC5')
#先得到柱形图
p <- ggplot(mydata, aes(x = 省份, y = 面积, fill = 省份)) + 
  geom_bar(stat = 'identity', width = 0.8) +
  scale_fill_manual(values = color[1:length(unique(mydata$省份))]) +
  theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text.x = element_blank()) +
  labs(x = '', y = '')+
  guides(fill=guide_legend(title=NULL))
p
#再经极坐标系变换得到圆环图
p + coord_polar(theta = 'y')
Posted in RTagged

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注