Matplotlib 库功能十分强大,内容也非常多,本篇简单介绍一下各种常用图表的绘制。
Matplotlib是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台交互式环境的出版物质量数据。Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。
Matplotlib试图让简单易事的事情成为可能。你只需几行代码即可生成绘图,直方图,功率谱,条形图,误差图,散点图等。
把所有的点连接起来,可以指定连线的样式和颜色等。
每个点的坐标不是一个个输入,而是把所有 x 坐标放在一个数组里面,所有的 y 坐标放在另一个数组里面,然后再分组输入。这个需要注意一下,不能搞混。
import matplotlib.pyplot as plt # 创建一个图形窗口 plt.figure() # 绘制连接点(0, 0)、(3, 6)和(8, 10)的折线 plt.plot([0, 3, 8], [0, 6, 10]) # x轴标签 plt.xlabel("x") # y轴标签 plt.ylabel("y") # 标题 plt.title("A simple plot") plt.show()
看图:
把每个点显示出来,操作与线型图类似,x 和 y 分两组输入。
import matplotlib.pyplot as plt import numpy as np plt.figure() # 30个随机分布的横坐标,位于[0, 1]之间 x = np.random.rand(30) # 30个随机分布的纵坐标,位于[0, 1]之间 y = np.random.rand(30) # 绘制散点图,透明度为0.6 plt.scatter(x, y, alpha=0.6) plt.show()
看图:
条形图是用条形的长度表示各类别频数的多少,其宽度(表示类别)是固定的,主要用于展示分类数据。要与直方图区分开来,需要注意。
import matplotlib.pyplot as plt import numpy as np plt.figure() # x,y的数值 x = np.arange(5) y = np.random.randint(low=0, high=100, size=5) # 每条数值的颜色 colors = np.random.rand(5 * 3).reshape(5, -1) # x轴数值标签 labels = ['one', 'two', 'shree', 'four', 'five'] # 标题 plt.title("Bar Chart") # 绘制条形图 plt.bar(x, y, alpha=0.8, color=colors, tick_label=labels) plt.show()
看图:
直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。要与条形图区分开来,需要注意。
主要用于展示数据型数据,各矩形通常是连续排列。
import matplotlib.pyplot as plt import numpy as np plt.figure() # 使随机数据可预测 np.random.seed(0) # 均值和方差 loc, scale = 100, 20 # 输出100个正态分布的数据 a = np.random.normal(loc, scale, size=100) # 绘制直方图,划分成15个范围 plt.hist(a,bins=15) plt.show()
看图:
划分为几个扇形的圆形统计图表,用于描述量、频率或百分比之间的相对关系。
数据和标签分两组输入。
import matplotlib.pyplot as plt import numpy as np plt.figure() # 每一块的值 data = np.random.rand(5) * 100 # 表格标签 labels = ['one', 'two', 'three', 'four', 'five'] # 绘制饼状图, 指定位数 plt.pie(data, labels=labels, autopct='%1.1f%%') # x,y轴刻度设置一致,保证饼图为圆形 plt.axis('equal') # 显示图例 plt.legend() plt.show()
看图:
Matplotlib 的中文文档:https://www.matplotlib.org.cn/