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]
相关推荐
十三画者1 小时前
【文献分享】MicroProphet一种具有时间感知能力的机器学习框架能够以个性化的方式精确预测微生物群落的动态变化
人工智能·机器学习·数据分析
实用科研工具箱3 小时前
生物医学科研工具测评:绘图、数据可视化、素材一站式整理
信息可视化·数据挖掘·数据分析·科研·科研绘图·科研绘图工具
wang_yb14 小时前
3分钟看懂p值和置信区间:别再被_显著_忽悠了
数据分析·databook
SQL必知必会1 天前
SQL 数据分析入门:如何把业务问题翻译成 SQL 查询
大数据·sql·数据分析
Mr数据杨1 天前
多语言句子对推理驱动事实核查与内容审核
机器学习·数据分析·kaggle
InfiniSynapse1 天前
minimax_image插件基本上能做到无AI感出图了
人工智能·ai作画·数据分析·aigc
数模竞赛Paid answer1 天前
2024年华数杯数学建模B题VLSI电路单元的自动布局解题全过程文档及程序
数学建模·数据分析·华数杯
GIS数据转换器1 天前
延凡分布式光伏集中监控平台
人工智能·分布式·数据挖掘·数据分析·无人机·智慧城市
一只数据集1 天前
机器学习多领域综合数据集分析-包含基因表达时间序列分类回归数据-适用于算法训练模型评估科研应用
人工智能·算法·数据分析