前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >4种绘制带误差线的柱形图

4种绘制带误差线的柱形图

作者头像
生信菜鸟团
发布2020-04-27 21:51:34
6.9K0
发布2020-04-27 21:51:34
举报
文章被收录于专栏:生信菜鸟团

hi欢迎回来,集合半年的Python3学习笔记已经整理成专辑啦,诚意推荐。

python100天还在继续,到第三周的时候就显得有点难啃了,笔记中很难进行很好的转述,因此就对原有的python3笔记进行补充。今天的推送主要解决不同方式下的柱形图可视化,当然主要要使用python。R真香。

Python - 100天从新手到大师|D0

Python - 100天从新手到大师|D1-D7学习笔记

Python - 100天从新手到大师|D8-D14学习笔记

柱形图绘图的方式,有需要挑自己喜欢的用。

以下数据使用参考资料中的示例数据。

plotly

Plotly绘图包基本使用说明

代码语言:javascript
复制
import plotly.graph_objects as go

fig = go.Figure()
fig.add_trace(go.Bar(
    name='Control',
    x=['Trial 1', 'Trial 2', 'Trial 3'], y=[3, 6, 4],
    error_y=dict(type='data', array=[1, 0.5, 1.5])
))
fig.add_trace(go.Bar(
    name='Experimental',
    x=['Trial 1', 'Trial 2', 'Trial 3'], y=[4, 7, 3],
    error_y=dict(type='data', array=[0.5, 1, 2])
))
fig.update_layout(barmode='group')
fig.show()

matplotlib

10个python绘图包介绍

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

size = 3
x = np.arange(size)
a = [3, 6, 4]
a_SD = [1, 0.5, 1.5]
b = [4, 7, 3]
b_SD = [0.5, 1, 2]

total_width, n = 0.8, 2
width = total_width / n
x = x - (total_width - width) / 2
labels = ['Trial 1', 'Trial 2', 'Trial 3']

plt.bar(x, a,  width=width, yerr = a_SD, tick_label=labels, label='Control')
plt.bar(x + width, b, width=width, yerr = b_SD, tick_label=labels ,label='Experimental')

plt.legend()
plt.show()

不难发现,在python绘图中,都需要指定误差线的值以后,才能进行标注的,虽然我们可以使用numpy进行计算,但是这一部分不在绘图系统中,还是显得有点麻烦。比如下面的两种方式:

代码语言:javascript
复制
import numpy as np 
arr = [3, 6, 4]

#求标准差
arr_std = np.std(arr,ddof=1)
print("标准差为:%f" % arr_std)

R ggplot2

代码语言:javascript
复制
# 测试数据
tg <- ToothGrowth
# 转换为因子类型
tgc2 <- tgc
tgc2$dose <- factor(tgc2$dose)


# (左)误差线1:Error bars represent standard error of the mean
ggplot(tgc2, aes(x=dose, y=len, fill=supp)) + 
    geom_bar(position=position_dodge(), stat="identity") +
    geom_errorbar(aes(ymin=len-se, ymax=len+se),
                  width=.2, # 设置误差线的宽度 


# (右)误差线2:使用95%置信区间
ggplot(tgc2, aes(x=dose, y=len, fill=supp)) + 
    geom_bar(position=position_dodge(), stat="identity") +
    geom_errorbar(aes(ymin=len-ci, ymax=len+ci),
                  width=.2,                    # Width of the error bars
                  position=position_dodge(.9))

EXCEL

如果要使用标准差进行标注,也需要自行使用公式(见下)计算了以后,在误差线上选择自定值进行修改。

标准差与标准误

标准差StandardDeviation),在概率统计中最常使用作为统计分布程度(statisticaldispersion)上的测量。标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根。它反映组内个体间的离散程度。公式如下:

标准差表示的就是样本数据的离散程度。标准差就是样本平均数方差的开平方,标准差通常是相对于样本数据的平均值而定的,通常用M±SD来表示,表示样本某个数据观察值相距平均值有多远。从这里可以看到,标准差受到极值的影响。标准差越小,表明数据越聚集;标准差越大,表明数据越离散。

标准误差表示的是抽样的误差。因为从一个总体中可以抽取出无数多种样本,每一个样本的数据都是对总体的数据的估计。标准误代表的就是当前的样本对总体数据的估计,标准误代表的就是样本均数与总体均数的相对误差。标准误是由样本的标准差除以样本容量的开平方来计算的。从这里可以看到,标准误更大的是受到样本容量的影响。样本容量越大,标准误越小,那么抽样误差就越小,就表明所抽取的样本能够较好地代表总体。

对应excel函数中,如是总体(即估算总体方差),根号内除以n(对应excel函数:STDEVP);如是抽样(即估算样本方差),根号内除以(n-1)(对应excel函数:STDEV)。

柱形图的展现形式除了基础版本,还有簇状及堆叠图,饼图都是变形体,在上述的绘图包中都能实现轻易转换。


主要参考资料

https://plotly.com/python/error-bars/

https://zhuanlan.zhihu.com/p/37915271

https://blog.csdn.net/tanzuozhev/article/details/51106089

https://baike.baidu.com/item/%E6%A0%87%E5%87%86%E5%B7%AE

生信技能树目前已经公开了三个生信知识库,记得来关注哦~

每周文献分享

https://www.yuque.com/biotrainee/weeklypaper

肿瘤外显子分析指南

https://www.yuque.com/biotrainee/wes

生物统计从理论到实践

https://www.yuque.com/biotrainee/biostat

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • plotly
  • matplotlib
  • R ggplot2
  • EXCEL
  • 标准差与标准误
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档