ggplot_比例表现02

单变量比例分布

条形图、堆叠条形图、并排条形图可以用来表现比例以及分组内的比例。 饼图经常用来表现单个分组方式的各组比例。

ggplot2没有专门的饼图函数, 可以用geom_col()与coord_polar()配合

R 复制代码
library(ggplot2)
library(ggridges)
library(dplyr)
library(GGally)

iris = read.csv('../../seaborn-data/iris.csv')
tips = read.csv('../../seaborn-data/tips.csv')
复制代码
Attaching package: 'dplyr'


The following objects are masked from 'package:stats':

    filter, lag


The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
R 复制代码
tips_day_count <- tips |>
  select(day) |>
  count(day) |>
  mutate(ratio = n)

p <- ggplot(data = tips_day_count,mapping = aes(x = 1,y=ratio,fill=day))

p + geom_col() + coord_polar(theta = "y") +
  scale_x_continuous(name = NULL, breaks = NULL) +
  scale_y_continuous(name = NULL, breaks = NULL) +
  labs(fill = "Cut")

当然也可以用R自带的pie函数绘制饼图

R 复制代码
piepercent = paste(round(100*tips_day_count$n/sum(tips_day_count$n)), "%")
pie(tips_day_count$n,labels=piepercent,col=rainbow(12))
legend("topright", tips_day_count$day, cex=0.8, fill=rainbow(12))

再粗糙点,直接用geom_col(postion='stack),也能达到饼状图的表达效果

R 复制代码
p + geom_col(position = 'stack')

有时需要比较不同组的某个变量的比例分布。

R 复制代码
ggplot(data = tips,mapping = aes(x = day,y=total_bill,fill=sex))+geom_col(position = 'dodge')
R 复制代码
ggplot(data = tips,mapping = aes(x = total_bill,fill=day))+geom_density(position = 'fill')
R 复制代码
ggplot(data = tips,mapping = aes(x = total_bill,fill=day))+geom_density_line(alpha=0.5,mapping = aes(y=..count..))

嵌套比例分布的比较

马赛克图是另外一种表现列联表频数的图形, 用色块面积表示每个交叉类的频数。 与堆叠条形图相比, 这里用了条形宽度而不是条形高度表示大类频数。

R 复制代码
tips_day_count <- tips |>
  count(day,smoker)|>
  group_by(day) |>
  mutate(ratio = sum(n))

ggplot(tips_day_count,aes(y=n,x=day,width=ratio,fill=smoker))+
  geom_col(position = 'fill')+
  facet_grid(~day,scales = "free_x",space = "free_x")
R 复制代码
tips |>
  count(day,smoker)|>
  group_by(day) |>
  mutate(ratio = sum(n))

| day | smoker | n | ratio |

<chr> <chr> <int> <int>
Fri No 4 19
Fri Yes 15 19
Sat No 45 87
Sat Yes 42 87
Sun No 57 76
Sun Yes 19 76
Thur No 45 62
Thur Yes 17 62
[A grouped_df: 8 × 4]
相关推荐
Asa121381 天前
R语言实现多组学因子分析(MOFA)
数据分析
漂着的圆木1 天前
Agent 功能参与度:Copilot 怎么算
sql·数据分析·agent·githubcopilot·度量
paopaokaka_luck1 天前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
Aloudata1 天前
语义层和SQL Copilot:一个降低写SQL门槛,一个统一业务逻辑
大数据·人工智能·数据分析·data agent·语义层
IT研究室1 天前
最新大数据毕业设计选题推荐-基于大数据的信用等级数据分析与可视化-大数据-Spark-Hadoop-Bigdata
大数据·信息可视化·数据分析·spark·课程设计
paopaokaka_luck2 天前
考研政治刷题小程序(AI推荐题目、ECharts数据分析、章节练习与专项训练、模拟考试、错题本与收藏夹、学习打卡与目标管理、题库和组卷维护)
前端·javascript·spring boot·spring·数据分析·echarts
2601_960620372 天前
2026校招市场策略岗项目准备指南:调研/竞品/活动/竞赛4类项目
数据分析
SelectDB2 天前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
SelectDB2 天前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析
AI职业加油站2 天前
数据要素价值释放年:大数据治理工程师,站上职业新风口
人工智能·学习·职场和发展·数据分析·职场发展