r语言liftchart_R语言基础绘图函数绘制帕类托图(Pareto chart)

本文介绍了如何使用R语言的基础包绘制帕累托图,展示了如何结合柱状图和折线图展示疾病严重程度评分与生存、死亡率的关系。通过数据统计、处理和图形绘制,逐步讲解了完整的过程。
摘要由CSDN通过智能技术生成

有时候我们会用帕累托图(Pareto chart)来展现数据的两个指标(一个频数,一个率),这种情况就需要用双坐标来展示。ggplot2的作者Hardley似乎也不太认同双坐标的存在。那么,有时候回归基础包,也是另一种尝试。花了点时间用基础包画了下面这张帕类托图,左侧纵坐标代表病人例数,右侧表示死亡率,横坐标是一种疾病严重程度评分。那么我们来看一下这么一张图是怎么一步步画出来的吧。

image.png

首先是读入数据

df

需要示例数据的可以直接在文末留言

查看数据头部前6行

head(df)

image.png

查看数据尾部的6行

tail(df)

image.png

做帕累托图需要准备的数据格式是两列 :第一列是SOFA评分,在医学领域,SOFA评分越高,表示疾病约严重。第二列是病人的生存情况,0代表存活,1代表死亡。

接下来对对数据做一个简单的统计

统计一下每个评分对应的生存和死亡人数

count_sofa

count_sofa

image.png

再统计一下生存率和死亡率

round (addmargins (prop.table( table(df$status, df$sofa), 2), 1)*100, 2)

image.png

这行代码稍微有点长,用到了四个函数

table()

prop.table()

addmargins()

round()

把这四个函数从里到外一次运行应该就可以知道每个函数起到什么作用了。

接下来将评分和死亡率整合在一个新的数据集里

sofa_score

mortality_rate

prop.table (

table (df$status, df$sofa), 2), 1)*100, 2) [2, ])

sofa_data

sofa_data

image.png

首先是画柱形图

barplot (count_sofa, xlim = c(0, 24), xlab = "SOFA Score",

ylab = "Numbers of Patients")

image.png

默认黑白配色,我们可以改一下颜色。注意,这里的颜色设定参数col,等同于ggplot2里的fill。

barplot (count_sofa, xlim=c (0, 24), xlab = "SOFA Score",

col = c ("#66C2A5", "#FC8D62"),

ylab = "Numbers of Patients")

image.png

柱形图上添加折线图

bar

col = c ("#66C2A5", "#FC8D62"),

ylab = "Numbers of Patients")

par(new=T)

plot (bar, sofa_data$mortality_rate,

axes=F, xlim=c(0, 24),

ylim=c(0, 100),

xlab="", ylab="",

col="black", lwd=2,

type="b")

image.png

初具雏形,添加右侧纵坐标和坐标文字

bar

col = c ("#66C2A5", "#FC8D62"),

ylab = "Numbers of Patients")

par(new=T)

plot (bar, sofa_data$mortality_rate,

axes=F, xlim=c(0, 24),

ylim=c(0, 100),

xlab="", ylab="",

col="black", lwd=2,

type="b")

axis (4, col="black", col.ticks="black", col.axis="black")

mtext ("Mortality (%)", side=4, line=3, col="black")

image.png

但是这里遇到一个问题是添加右侧坐标轴的标题没有显示出来,因为超出了绘图边界。所以要对默认的绘图边界进行修改

par (mar = c (5, 5, 4, 5))

bar

col = c ("#66C2A5", "#FC8D62"),

ylab = "Numbers of Patients")

par(new=T)

plot (bar, sofa_data$mortality_rate,

axes=F, xlim=c(0, 24),

ylim=c(0, 100),

xlab="", ylab="",

col="black", lwd=2,

type="b")

axis (4, col="black", col.ticks="black", col.axis="black")

mtext ("Mortality (%)", side=4, line=3, col="black")

image.png

因为在默认条件下,对于图形周边间隙的设定为5, 4, 4, 2(底边,左边,顶边,右边),我们需要对页面布局重新进行设定,以防右侧坐标文字无法显示。 用到的是 par (mar = c (5, 5, 4, 5))

最后是添加添加图例。locator (1)这个参数可以交互式地放置图例。运行这句后,光标显示十字,鼠标点下的位置,即为图例最后出现的位置。

par (mar = c (5, 5, 4, 5))

bar

col = c ("#66C2A5", "#FC8D62"),

ylab = "Numbers of Patients")

par(new=T)

plot (bar, sofa_data$mortality_rate,

axes=F, xlim=c(0, 24),

ylim=c(0, 100),

xlab="", ylab="",

col="black", lwd=2,

type="b")

axis (4, col="black", col.ticks="black", col.axis="black")

mtext ("Mortality (%)", side=4, line=3, col="black")

legend (locator (1),

legend=c ("Survivor", "Non-survivor", "Mortality"),

pch = c (15, 15, 1),

col=c ("#66C2A5", "#FC8D62", "black"))

image.png

欢迎大家关注我的公众号

小明的数据分析笔记本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值