安装:介绍
Matplotlib 是 Python 中最常用的 2D 绘图库,也可以用来绘制 3D 图形。它提供了一套面向对象(OO)和基于 pyplot 的 MATLAB 风格接口,几乎能画出所有静态、动态、交互式的图表。- matplotlib/
- ├─ init.py # 顶层命名空间,常用别名 import matplotlib as mpl
- ├─ pyplot.py # MATLAB 风格接口,最常用 import matplotlib.pyplot as plt
- ├─ artist.py # 绘图元素基类
- ├─ axes.py # Axes 对象
- ├─ figure.py # Figure 对象
- ├─ axis.py # X/YAxis 对象
- ├─ backend_*.py # 各后端实现
复制代码 matplotlib.pyplot
最常用的高层接口,直接操作当前 figure/axes,函数式调用。
典型函数:plot、scatter、hist、imshow、subplots、savefig、show 等。
matplotlib.figure
管理整张图(Figure 对象),包含一个或多个 Axes。
matplotlib.axes
真正的“画布”,所有绘图都在 Axes 上完成。
关键方法:plot、bar、pie、contour、pcolormesh、annotate 等。
子模块 matplotlib.axes.Axes 中 >200 个绘图/辅助方法。
函数名称描述Plot折线图或点图Scatter绘制x与y的散点图Bar绘制条形图Barh绘制水平条形图Stem棉签图Boxplot绘制箱型图Hist绘制直方图his2d绘制2D直方图Pie绘制饼状图Step绘制阶梯图Quiver绘制一个二维按箭头Stackplot绘制堆叠图Polar绘制极坐标图折线图
plot() 用于画图它可以绘制点和线,语法格式如下:- # 画单条线
- plot([x], y, [fmt], *, data=None, **kwargs)
- # 画多条线
- plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
复制代码 参数说明:
x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。x 轴是可选,不指定则以y轴长度为个数,生成从0开始的整数数组为x轴。
fmt:可选,定义基本格式(如颜色、标记和线条样式)。
**kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。
基础折线图:- import matplotlib.pyplot as plt
- x = [1,2,3,4]
- y = [2,4,9,26]
- plt.plot(x,y)
- plt.show()
复制代码
标签信息:
在画布中添加标签信息:
- plt.xlabel(): x轴坐标信息
- plt.ylabel(): y轴坐标信息
- plt.title(): 顶部标题信息
- import matplotlib.pyplot as plt
- x = [1,2,3,4]
- y = [2,4,9,26]
- plt.plot(x,y)
- plt.xlabel("x")
- plt.ylabel("y")
- plt.title("title")
- plt.show()
复制代码
网格:
plt.grid(): 设置画布中显示网格线- import matplotlib.pyplot as plt
- x = [1,2,3,4]
- y = [2,4,9,26]
- plt.plot(x,y)
- plt.xlabel("x")
- plt.ylabel("y")
- plt.title("title")
- plt.grid()
- plt.show()
复制代码
点图:
设置fmt参数,绘制点图- import matplotlib.pyplot as plt
- x = [1,2,3,4]
- y = [2,4,9,26]
- plt.plot(x,y, "o")
- plt.show()
复制代码
柱状图
bar() 方法语法格式如下:- matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
复制代码 参数说明:
- x:数组,柱形图的 x 轴数据。
- height:数组,柱形图的高度。
- width:浮点型数组,柱形图的宽度。
- bottom:数组,底座的 y 坐标,默认 0。
- align:柱形图与 x 坐标的对齐方式
- 'center' 以 x 位置为中心,这是默认值。
- 'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'。
- **kwargs::其他参数。
基础柱状图:- import matplotlib.pyplot as plt
- x = ["apple", "banana", "origin", "watermelon"]
- y = [12, 22, 6, 18]
- plt.bar(x, y)
- plt.show()
复制代码
设置柱状图颜色:- import matplotlib.pyplot as plt
- x = ["apple", "banana", "origin", "watermelon"]
- y = [12, 22, 6, 18]
- plt.bar(x, y, color="blue")
- plt.show()
复制代码- import matplotlib.pyplot as plt
- x = ["apple", "banana", "origin", "watermelon"]
- y = [12, 22, 6, 18]
- plt.bar(x, y, color=["skyblue", "origin", "magenta", "cyan"])
- plt.show()
复制代码
柱状图填充
使用 hatch 参数可以指定柱状图填充形状, 取值包括:'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'- import matplotlib.pyplot as plt
- x = ["apple", "banana", "origin", "watermelon"]
- y = [12, 22, 6, 18]
- plt.bar(x, y, hatch="/")
- plt.show()
复制代码
设置数值
使用 plt.bar_label 函数给柱状图设置数值参数- import matplotlib.pyplot as plt
- x = ["apple", "banana", "origin", "watermelon"]
- y = [12, 22, 6, 18]
- bar = plt.bar(x, y)
- plt.bar_label(bar)
- plt.show()
复制代码
柱状对比图:- import matplotlib.pyplot as plt
- y_1 = [0.1136, 1.4602, 0.3427, 1.8336]
- y_2 = [0.2234, 1.2587, 0.4416, 1.8415]
- #2、创建画布
- plt.figure(figsize=(20,8))
- plt.bar([i-0.1 for i in range(4)], y_1, width=0.2, label='before optimize')
- plt.bar([i+0.1 for i in range(4)], y_2, width=0.2, label='after optimize')
- #4、修改X刻度
- plt.xticks([0,1,2,3], ['MSE', 'RMSE', 'MAE', 'R2'])
- plt.legend()
- plt.grid(True)
- plt.title("model optimize compare")
- plt.xlabel("metrics")
- plt.ylabel("value")
- plt.show()
复制代码
饼图
pie 是饼图的函数,下面是函数接口:- pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)
复制代码
- x:浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。
- labels:列表,各个扇形的标签,默认值为 None。
- colors:数组,表示各个扇形的颜色,默认值为 None。
基础饼图:- import matplotlib.pyplot as plt
- import numpy as np
- x = np.array([35, 25, 25, 15])
- plt.pie(x)
- plt.show()
复制代码
标签和颜色:
labels:设置每一个饼图的标签,和饼图个数不一致会报错
colors:设置每一个饼图的颜色,和饼图个数不一致会报错- x = [35, 25, 25, 15]
- label = ['apple', "banana", "orange", "watermelon"]
- color=["skyblue", "pink", "teal", "cyan"]
- plt.pie(x, labels=label, colors=color)
- plt.show()
复制代码
添加百分比:
autopct: 设置百分比,%0.1f%% 代表小数点后一位的带百分号的百分比- x = [35, 25, 25, 15]
- label = ['apple', "banana", "orange", "watermelon"]
- color=["skyblue", "pink", "teal", "cyan"]
- plt.pie(x, labels=label, colors=color, autopct="%0.1f%%")
- plt.show()
复制代码
棉签图
- import numpy as np
- pred = np.array([0.5, 0.9, 0.23, 0.56, 0.8, 0.4, 0.5, 0.4, 0.7, 0.1, 0.9])
- y_test = np.array([0.1, 0.2, 0.3, 0.8, 0.1, 0.2, 0.9, 0.1, 0.5, 0.3, 0.4])
- diff = pred - y_test
- plt.stem(list(range(len(diff))), diff, linefmt="-.")
- plt.show()
复制代码
箱线图
boxplot(箱线图,又称为盒须图、盒式图)是在1977年由美国统计学家John Tukey发明,分析数据需要为定量数据。通过箱线图,可以直观的探索数据特征,比如观察数据中是否存在异常数据,离群数据。
箱线图共由五个数值点构成,分别是最小观察值,25%分位数(Q1),中位数,75%分位数(Q3),最大观察值,
- 最小观察值 = Q1 – 1.5(IQR), IQR = Q3 –Q1
- 最大观察值 = Q3 + 1.5(IQR), IQR = Q3 –Q1
下图显示了箱型图与正态分布的概率分布函数的比较。
箱线图查看:
下极限(Min):数据集中最小的值。
下四分位数(Q1):数据的第25百分位数。
中位数(Q2):数据的第50百分位数。
上四分位数(Q3):数据的第75百分位数。
上极限(Max):数据集中最大的值。
注意:
上下限:上下限并不是整个数据样本的最大值和最小值,而是
- 上限 = 去除异常值的最大值(Q3+1.5IQR)
- 下限 = 去除异常值的最小值(Q1-1.5IQR)
在上下限这里分别划出两条线段作为异常值的分界点。
- import numpy as np
- arr = np.array([0.5, 0.9, 0.23, 0.56, 0.8, 0.4, 0.5, 0.4, 0.7, 0.1, 0.9])
- plt.boxplot(arr)
- plt.show()
复制代码
存在异常值的数据:- import numpy as np
- arr = np.array([2.5, 0.9, 0.23, 0.56, 0.8, 2.4, 0.5, 0.4, 0.7, 0.1, 0.9])
- plt.boxplot(arr)
- plt.show()
复制代码
箱体填充:- import numpy as np
- arr = np.array([0.5, 0.9, 0.23, 0.56, 0.8, 0.4, 0.5, 0.4, 0.7, 0.1, 0.9])
- plt.boxplot(arr, patch_artist=True)
- plt.show()
复制代码
中位线样式:- import numpy as np
- arr = np.array([0.5, 0.9, 0.23, 0.56, 0.8, 0.4, 0.5, 0.4, 0.7, 0.1, 0.9])
- plt.boxplot(arr, patch_artist=True, medianprops={'linestyle': '-', 'color': 'y', 'linewidth': 1.5})
- plt.show()
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |