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]
相关推荐
databook4 小时前
从循环到向量化:NumPy提速的7个关键思维
python·数据分析·numpy
wang_yb4 小时前
从循环到向量化:NumPy提速的7个关键思维
数据分析·databook
paopaokaka_luck6 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
葡萄城技术团队10 小时前
为什么 BI 项目最容易被忽略的是数据异常?
数据分析
SelectDB10 小时前
信创适配速查手册:国产 CPU / OS 对照表、认证许可速查与部署检查项清单
大数据·数据库·数据分析
SelectDB10 小时前
Workload Group 参数速查:排队与并发配置、CPU 软硬限切换与常见配置问题清单
大数据·数据库·数据分析
Data-Miner14 小时前
AI 做表数据分析知识百科:定义、原理、概念与应用
人工智能·数据挖掘·数据分析
蒸鱼Yuzheng15 小时前
长时间内存测试:增长斜率、变点检测与伪泄漏排除
数据分析·性能测试·unreal engine·内存泄漏·memreport
residual_fan15 小时前
基于控制感知域对抗网络的变工况故障诊断:从控制系统与运行状态协同的角度建立模型
人工智能·算法·数据挖掘·数据分析
数脉15 小时前
数据血缘的八个典型企业应用场景
数据挖掘·数据分析·数据可视化