一、堆积图

1、堆积柱状图

如果将函数bar()中的参数bottom的取值设定为列表y、列表y1代表另一个数,函数bar(x,y1,bottom=y,color="r")就会输出堆积柱状图

代码示例:

  1. import matplotlib.pyplot as plt
  2. x = [1,2,3,4,5]
  3. y = [6,10,4,5,1]
  4. y1 = [2,6,3,8,5]
  5. plt.bar(x,y,align="center",color="#66c2a5",tick_label=["A","B","C","D","E"],label="title_A")
  6. plt.bar(x,y1,align="center",color="#8da0cb",tick_label=["A","B","C","D","E"],label="title_B")
  7. plt.legend()
  8. plt.show()

图像输出:

2、堆积条状图

如果将函数barh()中的参数left的取值设定为列表y,列表y1代表另一数据,函数bar(x,y1,left=y,color="r")

代码示例:

  1. import matplotlib.pyplot as plt
  2. x = [1,2,3,4,5]
  3. y = [6,10,4,5,1]
  4. y1 = [2,6,3,8,5]
  5. plt.barh(x,y,align="center",color="#66c2a5",tick_label=["A","B","C","D","E"],label="title_A")
  6. plt.barh(x,y1,align="center",left=y,color="#8da0cb",tick_label=["A","B","C","D","E"],label="title_B")
  7. plt.legend()
  8. plt.show()

图像输出:

二、分块图

1、多数据并列柱状图

代码示例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.arange(5)
  4. y = [6,10,4,5,1]
  5. y1 = [2,6,3,8,5]
  6. bar_width = 0.35
  7. tick_label = ["A","B","C","D","E"]
  8. plt.bar(x,y,align="center",color="c",width=bar_width,label="title_A",alpha=0.5)
  9. plt.bar(x+bar_width,y1,align="center",color="b",width=bar_width,label="title_B",alpha=0.5)
  10. plt.xticks(x+bar_width/2,tick_label)
  11. plt.legend()
  12. plt.show()

输出图像:

2、多数据平行条状图

代码示例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.arange(5)
  4. y = [6,10,4,5,1]
  5. y1 = [2,6,3,8,5]
  6. bar_width = 0.35
  7. tick_label = ["A","B","C","D","E"]
  8. plt.barh(x,y,bar_width,align="center",color="c",label="title_A",alpha=0.5)
  9. plt.barh(x+bar_width,y1,bar_width,align="center",color="b",label="title_B",alpha=0.5)
  10. plt.yticks(x+bar_width/2,tick_label)
  11. plt.legend()
  12. plt.show()

输出图像:

三、堆积折线图、间断条形图和阶梯图

1、函数stackplot() —— 绘制堆积折线图

代码示例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.arange(0,5,1)
  4. y = [0,4,3,5,6]
  5. y1 = [1,3,4,2,7]
  6. y2 = [3,4,1,6,5]
  7. labels = ["Blue","Brown","Green"]
  8. colors = ["#8da0cb","#fc8d62","#66c2a5"]
  9. plt.stackplot(x,y,y1,y2,labels=labels,colors=colors)
  10. plt.legend(loc="upper left")
  11. plt.show()

图像输出:

2、函数broken_barh() —— 绘制间断条形图

代码示例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. plt.broken_barh([(30,100),(180,50),(260,70)],(20,8),facecolors="#1f78b4")
  4. plt.broken_barh([(60,90),(190,520),(230,30),(280,60)],(10,8),facecolors=("#7fc97f","#beaed4","#fdc086","#ffff99"))
  5. plt.xlim(0,360)
  6. plt.ylim(5,35)
  7. plt.xticks(np.arange(0,361,60))
  8. plt.yticks([15,25],["A","B"])
  9. plt.grid(ls="-",lw=1,color="gray")
  10. plt.show()

图像输出:

3、函数step() —— 绘制阶梯图

参数说明:

  1. where:默认参数为“pre”,
  2. 参数值“pre”表示x轴上的每个数据点对应y轴上的数值向左侧绘制水平线直到x轴上的此数据点的左侧相邻数据点为止,
  3. 也就是说,x轴上的相邻数据点的取值是按照左开右闭区间进行选取的。
  4. 除了可以取“pre”,还可以取“post”,“post”指的是x轴上的相邻数据点的取值按照左闭右开的数据点选取,
  5. 然后用对应的y轴上的数据向右绘制水平线直到x轴上的数据点右侧相邻数据点为止。

代码示例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.linspace(1,10,10)
  4. y = np.sin(x)
  5. plt.step(x,y,color="#8dd3c7",where="pre",lw=2)
  6. plt.xlim(0,11)
  7. plt.xticks(np.arange(1,11,1))
  8. plt.ylim(-1.2,1.2)
  9. plt.show()

图像输出:

四、直方图

1、hist()

  1. hist(x,bins=bins,color="b",histtype="bar",label="score",rwidth=10)

参数说明:

  1. x:连续型数据的输入值
  2. bins:用于确定柱体的个数或是柱体边缘的范围
  3. color:柱体的颜色
  4. histtype:柱体类型
  5. label:图例内容
  6. rwidth:柱体宽度

2、堆积直方图

代码实例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x1 = np.random.randint(0,100,100)
  4. x2 = np.random.randint(0,100,100)
  5. x = [x1,x2]
  6. colors = ["#8dd3c7","#bebada"]
  7. labels = ["A","B"]
  8. bins = range(0,101,10)
  9. plt.hist(x,bins=bins,color=colors,histtype="bar",rwidth=10,stacked=True,label=labels,edgecolor = 'k')
  10. plt.legend(loc="upper left")
  11. plt.show()

堆积图像输出:

对比:不堆积并列(即:stacked=False)效果图输出 :

3、直方图与阶梯图结合对比

代码实例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x1 = np.random.randint(0,100,100)
  4. x2 = np.random.randint(0,100,100)
  5. x = [x1,x2]
  6. colors = ["#8dd3c7","#bebada"]
  7. labels = ["A","B"]
  8. bins = range(0,101,10)
  9. plt.hist(x,bins=bins,color=colors,histtype="stepfilled",rwidth=10,stacked=True,label=labels,edgecolor = 'k')
  10. plt.legend(loc="upper right")
  11. plt.show()

图像输出:

五、饼图

1、分列式饼图

代码实现:

  1. import matplotlib.pyplot as plt
  2. labels = ["A","B","C","D"]
  3. nums = [0.35,0.15,0.2,0.3]
  4. colors = ["#377eb8","#4daf4a","#984ea3","#ff7f00"]
  5. explode = (0.1,0.1,0.1,0.1)
  6. plt.pie(nums,explode=explode,labels=labels,autopct="%3.1f%%",startangle=45,shadow=True,colors=colors)
  7. plt.show()

图像输出:

2、非分裂式饼图

代码示例:

  1. import matplotlib.pyplot as plt
  2. labels = ["A","B","C","D"]
  3. nums = [0.35,0.15,0.2,0.3]
  4. colors = ["#377eb8","#4daf4a","#984ea3","#ff7f00"]
  5. plt.pie(nums,labels=labels,autopct="%3.1f%%",startangle=45,colors=colors,pctdistance=0.7)
  6. plt.show()

图像输出:

3、内嵌环形饼图

代码示例:

  1. import matplotlib.pyplot as plt
  2. labels = ["A","B","C","D","E"]
  3. nums1 = [40,15,20,10,15]
  4. nums2 = [30,25,15,20,10]
  5. colors = ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"]
  6. w1, t1, a1 = plt.pie(nums1,autopct="%3.1f%%",radius=1,pctdistance=0.85,colors=colors,textprops=dict(color="w"),wedgeprops=dict(width=0.3,edgecolor="w"))
  7. w2, t2, a2 = plt.pie(nums2,autopct="%3.1f%%",radius=0.7,pctdistance=0.75,colors=colors,textprops=dict(color="w"),wedgeprops=dict(width=0.3,edgecolor="w"))
  8. plt.legend(nums1,labels,fontsize=12,bbox_to_anchor=(0.91,0,0.3,1))
  9. plt.setp(a1,size=15,weight="bold")
  10. plt.setp(a2,size=15,weight="bold")
  11. plt.setp(t1,size=12)
  12. plt.show()

图像输出:

六、箱线图

  1. plt.boxplot(testList,whis=whis,widths=width,sym="o",labels=labels,patch_artist=True)

参数说明:

  1. testList:绘制箱线图的输入数据
  2. whis:四分位间距的倍数,用来确定箱须包含数据的范围大小
  3. widths:设置箱体的宽度
  4. sym:离群值的标记样式
  5. labels:绘制每一个数据集的刻度标签
  6. patch_artist:是否给箱体添加颜色

代码实例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. t1 = np.random.randn(5000)
  4. t2 = np.random.randn(5000)
  5. testList = [t1,t2]
  6. labels = ["A","B"]
  7. colors = ["#1b9e77","#d95f02"]
  8. whis = 1.6
  9. width = 0.35
  10. bplot = plt.boxplot(testList,whis=whis,widths=width,sym="o",labels=labels,patch_artist=True)
  11. for patch,color in zip(bplot["boxes"],colors):
  12. patch.set_facecolor(color)
  13. plt.grid(axis="y",ls=":",lw=1,color="gray",alpha=0.4)
  14. plt.show()

图像输出:

2、水平方向箱线图

代码示例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.random.randn(1000)
  4. plt.boxplot(x,vert=False)
  5. plt.grid(axis="x",ls=":",lw=1,color="gray",alpha=0.4)
  6. plt.show()

图像输出:

3、没有离群值的水平箱线图

代码示例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.random.randn(1000)
  4. plt.boxplot(x,vert=False,showfliers=False)
  5. plt.grid(axis="x",ls=":",lw=1,color="gray",alpha=0.4)
  6. plt.show()

图像输出:

七、误差棒图

1、定量数据的误差范围

代码示例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.linspace(0.1,0.6,10)
  4. y = np.exp(x)
  5. err = 0.05 + 0.15 * x
  6. low_err = err
  7. upp_err = err * 0.3
  8. err_lim = [low_err,upp_err]
  9. plt.errorbar(x,y,yerr=err_lim,fmt=":o",ecolor="y",elinewidth=4,ms=5,mfc='r',capthick=1,capsize=2)
  10. plt.xlim(0,0.7)
  11. plt.show()

图像输出:

参数说明:

  1. x,y : 数据点的位置
  2. yerr:单一数值的非对称形式误差范围 //误差范围非对称形式,而且数据点下方的误差范围大于数据点上方的误差范围,xerr类似
  3. fmt:数据点标记样式和数据点标记的连接线样式
  4. ecolor:误差棒的线条颜色
  5. elinewidth:误差棒的线条粗细
  6. ms:数据点的大小
  7. mfc:数据点的标记颜色
  8. mec:数据点的标记边沿颜色
  9. capthick:误差棒边界横杠的厚度
  10. capsize:误差棒边界横杠的大小

2、带误差棒的柱状图

代码实例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.arange(5)
  4. y = [100,68,79,91,82]
  5. err = [7,2,6,10,5]
  6. err_att = dict(elinewidth=2,ecolor="black",casize=3)
  7. plt.bar(x,y,color="c",width=0.6,align="center",yerr=err,error_kw=err_att,tick_label=["A","B","C","D","E"])
  8. plt.grid(True,axis="y",ls=":",color="gray",alpha=0.2)
  9. plt.show()

图像输出:

3、带误差棒的条形图

代码实例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.arange(5)
  4. y = [1200,2400,1800,2200,1600]
  5. err = [150,100,180,130,100]
  6. bar_width = 0.6
  7. colors = ["#377eb8","#4daf4a","#984ea3","#ff7f00","#e41a1c"]
  8. plt.barh(x,y,bar_width,color=colors,align="center",xerr=err,tick_label=["A","B","C","D","E"])
  9. plt.grid(True,axis="x",ls=":",color="gray",alpha=0.2)
  10. plt.show()

图像输出:

4、带误差棒的多数据并列柱状图

代码实例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.arange(5)
  4. y1 = [100,68,79,91,82]
  5. y2 = [120,75,70,78,85]
  6. err1 = [7,2,6,10,5]
  7. err2 = [5,1,4,8,9]
  8. err_att = dict(elinewidth=2,ecolor="black",capize=3)
  9. bar_width = 0.4
  10. tick_label=["A","B","C","D","E"]
  11. plt.bar(x,y1,bar_width,color="#87ceeb",align="center",yerr=err1,error_kw=err_att,label="NO.1")
  12. plt.bar(x+bar_width,y2,bar_width,color="#cd5c5c",align="center",yerr=err2,error_kw=err_att,label="NO.2")
  13. plt.xticks(x+bar_width/2,tick_label)
  14. plt.grid(True,axis="y",ls=":",color="gray",alpha=0.2)
  15. plt.legend()
  16. plt.show()

图像输出:

5、带误差棒的堆积柱状图

代码实例:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.arange(5)
  4. y1 = [1200,2400,1800,2200,1600]
  5. y2 = [1050,2100,1300,1600,1340]
  6. err1 = [150,100,180,130,80]
  7. err2 = [120,110,170,150,120]
  8. err_att = dict(elinewidth=2,ecolor="black",capize=0)
  9. bar_width = 0.6
  10. tick_label=["A","B","C","D","E"]
  11. plt.bar(x,y1,bar_width,color="#6495ed",align="center",yerr=err1,error_kw=err_att,label="NO.1")
  12. plt.bar(x,y2,bar_width,color="#ffa500",align="center",yerr=err2,error_kw=err_att,label="NO.2")
  13. plt.xticks(x,tick_label)
  14. plt.grid(True,axis="y",ls=":",color="gray",alpha=0.2)
  15. plt.legend()
  16. plt.show()

图像输出:

使用Python统计函数绘制复杂图形matplotlib的更多相关文章

  1. 使用Python统计函数绘制简单图形matplotlib

    1.bar() -- 绘制柱状图 plt.bar(x,y,align="center",color="b",tick_label=["a", ...

  2. Python画各种 3D 图形Matplotlib库

    回顾 2D 作图 用赛贝尔曲线作 2d 图.此图是用基于 Matplotlib 的 Path 通过赛贝尔曲线实现的,有对赛贝尔曲线感兴趣的朋友们可以去学习学习,在 matplotlib 中,figur ...

  3. Python数据处理——绘制函数图形以及数据拟合

    1.多项式拟合 对散点进行多项式拟合并打印出拟合函数以及拟合后的图形import matplotlib.pyplot as pltimport numpy as npx=np.arange(1,17, ...

  4. Python 使用 matplotlib绘制3D图形

    3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何在Python中使用 matplotlib进行3D图形的绘制,包括3D散点.3D表面.3D轮廓.3D直线( ...

  5. Python绘制3D图形

    来自:https://www.jb51.net/article/139349.htm 3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行 ...

  6. Python学习(一) —— matplotlib绘制三维轨迹图

    在研究SLAM时常常需要对其输出的位姿进行复现以检测算法效果,在ubuntu系统中使用Python可以很好的完成相关的工作. 一. Ubuntu下Python的使用 在Ubuntu下使用Python有 ...

  7. Python plot_surface(Axes3D)方法:绘制3D图形

    3D 图形需要的数据与等高线图基本相同:X.Y 数据决定坐标点,Z 轴数据决定 X.Y 坐标点对应的高度.与等高线图使用等高线来代表高度不同,3D 图形将会以更直观的形式来表示高度. 为了绘制 3D ...

  8. 10个Python 统计报表/图表图形类库

    matplotlib,官网:http://matplotlib.sourceforge.net/,Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模 ...

  9. python之绘制函数pyplot初探

    我们想将我们手里的数据通过图形的方式展示出来,这样我们更直观的,更可以发现数据带给我们的信息.今天给大家介绍要给python中pyplot绘制函数.一般我们想将手里的数据绘制成图形,分为四大步:1.准 ...

随机推荐

  1. ThreadLocal的意义和实现

    可以想像,如果一个对象的可变的变量被多个线程访问时,必然是不安全的. 在单线程应用可能会维持一个全局的数据库连接,并在程序启动时初始化这个连接对象,从而避免在调用每个方法时都传递一个Connectio ...

  2. MATLAB 均方根误差MSE、两图像的信噪比SNR、峰值信噪比PSNR、结构相似性SSIM

    今天的作业是求两幅图像的MSE.SNR.PSNR.SSIM.代码如下: clc; close all; X = imread('q1.tif');% 读取图像 Y=imread('q2.tif'); ...

  3. MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

    一.基本操作 . mongod 启动服务端 2. mongo 启动客户端 3. show databses 查看本地磁盘的数据库 4. use 库名 切换到要使用的数据库 5. db 查看当前使用的数 ...

  4. MySQL安装时MySQL server一直安装失败日志显示This application requires Visual Studio 2013 Redistributable

    使用MySQL社区版的msi包进行安装,试了好多次,别的组件都能正常安装,只有MySQL server的安装状态显示为fail.删除所有安装的程序,包括所依赖的各种Microsoft发布的包,删除所有 ...

  5. 利用策略模式实现了同一接口的多个Servicel实现类,如何同时注入Controller

    解决方法如上图,通过给实现类起别名,并在controller中,通过@Qualifier注解获取不同的实现类,之前没有这样写,会出现这样的情况: 通过@autowired注解注入dao层时为空,会报空 ...

  6. Java基础学习-三元运算符和键盘录入的基本步骤和使用

    1.三元运算符的执行流程   package com.denniscui_05; /*  * 三元运算符:  *         关系表达式?表达式1:表达式2  *  * 执行流程:  *      ...

  7. BMIP002协议介绍

    比原BMIP002协议 概述 比原链技术社区最近提出了一套资产规范提议,该提议允许在issue类型的交易中实现标准资产token.该标准定义资产在链上的基本功能,以及发行人通过智能合约管理资产的规范. ...

  8. 使用http服务提供yum源

    1.安装httpd yum -y install httpd systemctl start httpd systemctl enable httpd 2.镜像资源目录拷贝至http的网站根目录 /v ...

  9. 单源最短路径Dijkstra和优先级算法

    百度百科:迪杰斯特拉算法. 代码实现如下: import java.util.Comparator; import java.util.PriorityQueue; import java.util. ...

  10. erlang下lists模块sort(排序)方法源码解析(一)

    排序算法一直是各种语言最简单也是最复杂的算法,例如十大经典排序算法(动图演示)里面讲的那样 第一次看lists的sort方法的时候,蒙了,几百行的代码,我心想要这么复杂么(因为C语言的冒泡排序我记得不 ...