matplotlib绘制箱型图、误差棒图、堆积图等图形

1.箱型图
箱型图是由一个箱体和一对箱须所组成的统计图形。箱体由第一四分位数、中位数(第二四分位数)和第三四分位数所组成的。在箱须的末端之外的数值可以理解成离群值,因此,箱须是对一组数据范围的大致直观描述。

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

testA = np.random.randn(5000)
testB = np.random.randn(5000)

testList = [testA,testB]#绘制箱线图输入数据
labels = ["随机数生成器AlphaRM","随机数生成器BetaRM"]
colors = ["#1b9e77","#d95f02"]

whis = 1.6
width = 0.35
bplot = plt.boxplot(testList,
                    whis=whis,#四分位间距的倍数,用来确定箱须包含数据的范围大小
                    widths=width,#设置箱体的宽度
                    sym="o",#离群值的标记样式
                    labels=labels,#绘制每一个数据集的刻度标签
                    patch_artist=True)#是否给箱体添加颜色
for patch,color in zip(bplot["boxes"],colors):
    patch.set_facecolor(color)
plt.ylabel("随机数值")
plt.title("生成器抗干扰能力的稳定性比较")

plt.grid(axis="y",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
箱型图

我们将关键字参数notch的参数值设置为True,其他语句不变,那么箱体就会变成有“V”型凹痕的箱体了。


V型箱体

水平方向的箱型图

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

x = np.random.randn(1000)
plt.boxplot(x,vert=False)
plt.xlabel("随机数值")
plt.yticks([1],["随机数生成器AlphaRM"],rotation=90)
plt.title("随机数生成器抗干扰能力的稳定性")

plt.grid(axis="x",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
水平方向

不绘制离群值的水平放置的箱型图,修改下面语句即可:

plt.boxplot(x,vert=False,showfliers=False)
无离群值

2.误差棒图
在很多科协实验中都存在测量误差或是试验误差,这是无法控制的客观因素。在可视化试验结果的时候,最好可以给试验结果增加观测结果的误差以表示客观存在的测量偏差。误差棒图就是运用在这一场景中的很理想的统计图形。

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.1,0.6,10)
y = np.exp(x)
error = 0.05+0.15*x
lower_error = error
upper_error = 0.3*error
error_limit = [lower_error,upper_error]

plt.errorbar(x,y,yerr=error_limit,fmt=":o",
             ecolor="y",elinewidth=4,
             ms=5,mfc="c",mec="r",
             capthick=1,capsize=2)
# yerr单一数值的非对称形式误差范围;fmt数据点的标记样式和数据点标记的连接线样式
# ecolor误差棒的颜色线条颜色;elinewidth误差棒的线条粗细;ms数据点的大小;mfc数据点的标记颜色
# mec数据点的标记边缘颜色;capthick误差棒边缘横杠的厚度;capsize误差棒边缘横杠的大小
plt.xlim(0,0.7)
plt.show()
误差棒图

带误差棒的柱状图

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x = np.arange(5)
y = [100,68,79,91,82]
std_err = [7,2,6,10,5]
error_attri = dict(elinewidth=2,ecolor="black",capsize=3)
plt.bar(x,y,
        color="c",
        width=0.6,
        align="center",
        yerr=std_err,
        error_kw=error_attri,
        tick_label=["园区1","园区2","园区3","园区4","园区5"])
plt.xlabel("芒果种植区")
plt.ylabel("收割量")
plt.title("不同芒果种植区的单次收割量")
plt.grid(True,axis="y",ls=":",color="gray",alpha=0.2)
plt.show()
误差柱状图

带误差棒的堆积柱状图

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x = np.arange(5)
y1 = [1200,2400,1800,2200,1600]
y2 = [1050,2100,1300,1600,1340]
std_err1 = [150,100,180,130,80]
std_err2 = [120,110,170,150,120]
bar_width = 0.6
tick_label=["家庭","小说","心理","科技","儿童"]
error_attri = dict(ecolor="black",elinewidth=2,capsize=0)

plt.bar(x,y1,
        bar_width,
        color="#87ceeb",
        align="center",
        yerr=std_err1,
        error_kw=error_attri,
        label="地区1")
plt.bar(x,y2,
        bar_width,
        bottom=y1,
        color="#CD5C5C",
        align="center",
        yerr=std_err2,
        error_kw=error_attri,
        label="地区2")

plt.ylabel("订购数量")
plt.xlabel("图书种类")
plt.title("大型图书展销会的不同图书种类的采购情况")
plt.grid(True,axis="x",ls=":",color="gray",alpha=0.2)
plt.xticks(x,tick_label)
plt.legend()
plt.show()
误差堆积柱状图

3.堆积折线图
通过绘制不同数据集的折线图而生成的。堆积折线图是按照垂直方向上彼此堆叠且又不相互覆盖的排列顺序,绘制若干条折线图而形成的组合图形。
用函数stackplot()绘制堆积折线图

import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,6,1)
y=[0,4,3,5,6]
y1=[1,3,4,2,7]
y2=[3,4,1,6,5]
labels=["BluePlanet","BrownPlanet","GreenPlanet"]
colors=["#8da0cb","#fc8d62","#66c2a5"]
plt.stackplot(x,y,y1,y2,labels=labels,colors=colors)
plt.legend(loc="upper left")
plt.show()
堆积折线图

4.间断条形图
间断条形图是在条形图的基础上绘制而成的,主要用来可视化定性数据的相同指标在时间维度上的指标值的变化情况,实现定性数据的相同指标的变化情况的有效直观比较。
用函数broken_bath()绘制间断条形图

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

plt.broken_barh([(30,100),(180,50),(260,70)],(20,8),facecolors="#1f78b4")
plt.broken_barh([(60,90),(190,20),(230,30),(280,60)],(10,8),facecolors=("#7fc97f","#beaed4","#fdc086","#ffff99"))

plt.xlim(0,360)
plt.ylim(5,35)
plt.xlabel("演出时间")

plt.xticks(np.arange(0,361,60))
plt.yticks([15,25],["歌剧院A","歌剧院B"])
plt.grid(ls="-",lw=1,color="gray")
plt.title("不同地区的歌剧院的演出时间比较")
plt.show()
间断条形图

5.阶梯图
阶梯图是反映数据的趋势变化或是周期规律的。经常使用在时间序列数据的可视化任务中,凸显时序数据的波动周期和规律。
用函数step()绘制阶梯图

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(1,10,10)
y=np.sin(x)
plt.step(x,y,color="#8dd3c7",where="pre",lw=2)
#关键字参数where取pre左开右闭,取post左闭右开
plt.xlim(0,11)
plt.xticks(np.arange(1,11,1))
plt.ylim(-1.2,1.2)
plt.show()
阶梯图
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 图形初步 在本章中,我们将讨论处理图形的一般方法。我们首先探讨如何创建和保存图形,然后关注如何修改那些存在于所有图...
    jplee阅读 4,929评论 0 12
  • 相关概念 一、用法 比较两个定量变量用散点图比较定量变量和定性变量用小提琴图,箱线图比较两个定性变量用簇状柱形图(...
    喔蕾喔蕾喔蕾蕾蕾阅读 2,219评论 0 2
  • 你行走在城市的夜晚 等一辆疾驰而来的车 人海推动着人潮 一往直前的 圆一个奢望 你奔忙在人海浮世 等一扇铁门打开 ...
    我后半生的城市里阅读 216评论 0 0
  • 特此声明,只是一个老学姐的个人经验,不代表一定要按照这样的方法学习。 考研英语分为英语一和英语二,他们虽然考的侧重...
    了望台阅读 856评论 5 9
  • 吾马文章,此处为文后评论,日后整理 不能因为终点就在附近而掠过沿途的风景。不要因为时间短而不去与人交流,因为每个人...
    NoneLand阅读 146评论 0 0