[R]制作饼图

knitr::opts_chunk$set(echo = TRUE)

读取数据

#读取数据
library(readxl)
data <- read_xlsx("生活型.xlsx",1)
#输出数据包
library(do)
#作图分析包
library(dplyr)
library(gplots)
library(ggplot2)
library(ggthemes)
#颜色包
library(RColorBrewer)

饼图ggplot

#在文件中处理占比-舍去
per_data <- data %>% mutate(在地面积占比 = scales::percent(data$`在地面积(亩)` / sum(data$`在地面积(亩)`)))
per_data1<- per_data %>% mutate(种类数占比 = scales::percent(per_data$`种类数` / sum(per_data$`种类数`)))
#查看数据
knitr::kable(per_data1)
#制作占比
label_value <- paste('(',scales::percent(per_data$`种类数` / sum(per_data$`种类数`)), '%)', sep = '')
label <- paste(per_data1$生活型, label_value, sep = '')
#作图
ggplot(per_data1,mapping = aes(x="",y=per_data1$种类数,fill=生活型))+
  geom_bar(stat = "identity",position = "stack",width = 1)+
  coord_polar(theta = "y")+  #饼图
  labs(x = '', y ='', title = '')+ #清除标签
  theme_minimal()+  #清楚标题
  theme(axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    axis.text.x = element_blank(),
    axis.text.y = element_blank(),
    panel.border = element_blank(),
    panel.grid=element_blank(),
    axis.ticks = element_blank(),
    plot.title=element_text(size=25, face="bold"))+ #标题大小
  scale_fill_discrete(labels = label)+
  ggtitle("不同生活型的种类数占比")+#添加标题
  theme(legend.key.size = unit(1.2, "cm"))+ #修改图例大小
  theme(plot.title = element_text(hjust = 0.5,vjust = 0.1))+ #修改标题位置
  scale_fill_discrete(labels = label)+
  scale_fill_manual(values= brewer.pal(5,"Set3"))#改配色,必须在最后边

饼图pie

# 加载R包,没有安装请先安装  install.packages("包名")
library(graphics)
library(readxl)

# 读取饼图图数据文件
data <- read_xlsx("生活型.xlsx",1)

#保证扇形排列顺序,降序排列
data <- data[order(data$种类数, decreasing = TRUE),]

# 设置标签,直接计算占比,保留原始表格数据
#label_value <- paste('(',scales::percent(data$`种类数` / sum(data$`种类数`)), ')', sep = '')
#label <- paste(per_data1$生活型, label_value, sep = '')

label <- data$生活型

# 绘图
pie(data$种类数,
    labels=label,
    init.angle=90,    # 设置初始角度
    edges = 1000, # 越大越圆
    col = terrain.colors(length(data$种类数)) , # 设置颜色 topo.colors/cm.colors/heat.colors/rainbow
    border="white",   # 边框颜色
    cex = 0.8,# 字体大小
    main = "不同生活型的种类数占比",#标题
   # radius = 0.9,#半径大小
    cex.main=2)

重庆市药材的饼图

# 加载R包,没有安装请先安装  install.packages("包名")
library(graphics)
library(readxl)

# 读取饼图图数据文件
data1 <- read_xlsx("重庆1.xlsx",1)
data2 <- read_xlsx("重庆2.xlsx",1)

#保证扇形排列顺序,降序排列
data1 <- data1[order(data1$面积, decreasing = TRUE),]
data2 <- data2[order(data2$面积, decreasing = TRUE),]

# 设置标签,直接计算占比,保留原始表格数据
#label_value <- paste('(',scales::percent(data$`种类数` / sum(data$`种类数`)), ')', sep = '')
#label <- paste(per_data1$生活型, label_value, sep = '')

label1 <- data1$类别
label2 <- data2$类别

# 绘图
pie(data1$面积,
    labels=label1,
    init.angle=90,    # 设置初始角度
    edges = 1000, # 越大越圆
    col = terrain.colors(length(data$种类数)) , # 设置颜色 topo.colors/cm.colors/heat.colors/rainbow
    border="white",   # 边框颜色
    cex = 0.8,# 字体大小
    main = "重庆市药材种植占比",#标题
    radius = 1,#半径大小
    cex.main=2)

pie(data2$面积,
    labels=label2,
    init.angle=90,    # 设置初始角度
    edges = 1000, # 越大越圆
    col = terrain.colors(length(data$种类数)) , # 设置颜色 topo.colors/cm.colors/heat.colors/rainbow
    border="white",   # 边框颜色
    cex = 0.8,# 字体大小
    main = "重庆市药材种植占比",#标题
    radius = 1,#半径大小
    cex.main=2)
Posted in R

发表回复

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