matplotlib:使用函数绘制图表的组成元素和绘制简单图形
一、使用函数绘制matplotlib的图表组成元素
1.1 绘制matplotlib图表组成元素
首先,我们了解一下matplotlib
是如何组织内容的。在一个图形输出窗口中,底层是一个Figure
实例,我们称其为画布
。
在画布上,自然是图形,这些图形就是Axes
实例,Axes
实例几乎包含了我们要介绍的matplotlib组成元素,我们利用matplotlib.pyplot
模块的API
中的函数
1.2 数据准备
我们导入NumPy
和快速绘图模块pyplot
。
import matplotlib.pyplot as plt
import numpy as np
现在要定义一些所需要的数据:
x=np.linspace(0.5,3.5,100)
y=np.sin(x)
y1=np.random.randn(100)
【代码解释】
np.linspace(0.5,3.5,100)
:表示从0.5到3.5均匀取100个点。np.random.randn(100)
:在标准正态中随机取100个数。
1.3 绘制matplotlib图表组成元素的函数用法
这些都是Python中matplotlib
库里用于绘图和设置图表属性的重要函数,下面为你逐一介绍它们的用法和示例:
1. plt.plot()
- 功能:用于绘制折线图,可将一系列的数据点用直线连接起来。
- 调用签名
plt.plot(x,y,ls='-',lw=2,label="plot figure"
- 参数说明
位置参数
:x,y轴上的数值。
ls
:折线图的线条风格,常见取值有'-'
(实线,默认值)、'--'
(虚线)、'-.'
(点划线)、':'
(点线)等。
lw
:线条宽度。
label
:线条名字。
【示例】
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,100000)
y=np.sin(x)
y1=np.random.randn(100000)
plt.plot(x,y,ls='-',lw='2',label="正弦曲线")
plt.legend()
plt.show()
【结果】
2. plt.scatter()
- 功能:用于绘制散点图,将数据点以离散的点的形式展示。
- 调用签名:
plt.scatter(x,y,c="b",label="scatter figure")
-参数解释:
位置参数
:x,y轴上的数值。
label
:线条名字。
c
:表示散点图标记的颜色。
【示例】:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,100)
y=np.sin(x)
y1=np.random.randn(100)
plt.scatter(x,y,c='b',label="sinx")
plt.legend()
plt.show()
【结果】
3. plt.xlim()
- 功能:用于设置X轴的显示范围。
- 调用签名:
plt.xlim(xmin,xmax)
-参数解释:
xmin
:x轴上的最小值。
xmax
: x轴上的最大值。
【示例】:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,10000)
y=np.sin(x)
y1=np.random.randn(10000)
plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-20,30)
plt.ylim(-20,30)
plt.legend()
plt.show()
【结果】
4. plt.xlabel()
- 功能:用于为X轴添加标签。
- 调用签名:
plt.xlabel(string)
【示例】:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,10000)
y=np.sin(x)
y1=np.random.randn(10000)
plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-20,30)
plt.ylim(-20,30)
plt.xlabel("x-axis")
plt.legend()
plt.show()
【结果】
5. plt.grid()
- 功能:用于在图表中添加网格线,方便查看数据点的位置。
- 调用签名:
plt.grid(linestyle=":",color="r")
-参数解释:
linestyle
:指定网格线的样式,'-‘表示实线(默认值),’–‘表示虚线,’-.‘表示点划线,’:'表示点线。
color
:指定网格线的颜色,颜色名称字符串,如 ‘r’ 代表红色,‘b’ 代表蓝色,‘g’ 代表绿色,‘y’ 代表黄色等。十六进制颜色码,例如 ‘#FF0000’ 也表示红色。
【示例】:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,10000)
y=np.sin(x)
y1=np.random.randn(10000)
plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)
plt.grid(linestyle=":",color="r")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()
【结果】
6. plt.axhline()&plt.axvline()
- 功能:用于绘制一条水平参考线。
- 调用签名:
plt.axhline(y=0.0,c="r",ls="--",lw=2)
plt.axvline(x=4.0,c="r",ls="--",lw=2)
-参数解释:
位置参数
:h从y出发,v从x出发
【示例】:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,10000)
y=np.sin(x)
y1=np.random.randn(10000)
plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)
plt.grid(linestyle=":",color="r")
plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()
【结果】
7. plt.axhspan()&plt.axvspan()
- 功能:用于在图表中绘制一个垂直的区域。
- 调用签名:
plt.axvspan(xmin=1.0,xmax=2.0,facecolor="y",alpha=0.3)
-参数解释:
facecolor
:填充色
alpha
:透明度
【示例】:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,10000)
y=np.sin(x)
y1=np.random.randn(10000)
plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)
plt.grid(linestyle=":",color="r")
plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')
plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()
【结果】
8. plt.annotate()
- 功能:用于在图表中添加注释,可指向特定的数据点。
- 调用签名:
plt.annotate(text, xy, xytext=None, xycoords='data', textcoords=None, arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b"), annotation_clip=None, **kwargs)
plt.annotate(text, xy, xytext=None, weight='blod', textcoords=None, arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b"), annotation_clip=None)
-参数解释:
text
:注释文本
xy
:备注点坐标
xytext
:注视点的位置坐标
xycoords
:注释文本粗细风格
arrowprops
注释文本箭头的属性字典
annotation_clip
:布尔值,控制注释是否会被坐标轴裁剪。True 表示会被裁剪,False 表示不会被裁剪,默认值取决于具体情况。
【示例】:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,10000)
y=np.sin(x)
plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)
plt.grid(linestyle=":",color="r")
plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')
plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)
plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,0.8),
xycoords="data",
weight="bold",
color="b",
arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b")
)
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()
【结果】
9. plt.text()
- 功能:用于在图表中指定位置添加文本。
- 调用签名:
plt.text(x,y,string,weight="blod",color="b")
【示例】:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,10000)
y=np.sin(x)
plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)
plt.grid(linestyle=":",color="r")
plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')
plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)
plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,0.8),
xycoords="data",
weight="bold",
color="b",
arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b")
)
plt.text(20,0.9,"y=sin(x)",weight="bold",color="b")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()
【结果】
10. plt.title()
- 功能:用于为图表添加标题。
- 调用签名:
plt.title(string)
【示例】:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,10000)
y=np.sin(x)
plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)
plt.grid(linestyle=":",color="r")
plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')
plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)
plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,0.8),
xycoords="data",
weight="bold",
color="b",
arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b")
)
plt.text(20,0.9,"y=sin(x)",weight="bold",color="b")
plt.title("y=sinx")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()
【结果】
11. plt.legend()
- 功能:用于为图表中的不同元素添加图例,方便区分。
- 调用签名:
plt.legend(loc="lower left")
-参数解释:
loc
:图中的地理位置
【示例】:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,10000)
y=np.sin(x)
plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)
plt.grid(linestyle=":",color="r")
plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')
plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)
plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,0.8),
xycoords="data",
weight="bold",
color="b",
arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b")
)
plt.text(20,0.9,"y=sin(x)",weight="bold",color="b")
plt.title("y=sinx")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend(loc="lower left")
plt.show()
【结果】
1.4 合
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,30,10000)
y=np.sin(x)
plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)
plt.scatter(x,y,c='b',label="sinx")
plt.grid(linestyle=":",color="r")
plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')
plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)
plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,0.8),
xycoords="data",
weight="bold",
color="b",
arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b")
)
plt.text(20,0.9,"y=sin(x)",weight="bold",color="b")
plt.title("y=sinx")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend(loc="lower left")
plt.show()
二、使用统计函数绘制简单图形
2.1 函数bar()
绘制柱状图
- 函数功能:在x轴上绘制定性数据的分布特征。
- 调用签名:
plt.bar(x,y)
plt.bar(x, height, width=0.8, bottom=None, align='center', data=None, **kwargs)
- 参数解释
x
:表示柱子的位置,可以是数字列表、数组或者pandas
的Series
对象。它定义了每个柱子在 x 轴上的中心位置。height
:表示柱子的高度,同样可以是数字列表、数组或者pandas
的Series
对象。它决定了每个柱子的垂直高度。width
(可选):柱子的宽度,默认值为 0.8。可以是单个数值,表示所有柱子的宽度;也可以是与x
长度相同的数组,表示每个柱子的宽度。bottom
(可选):柱子底部的起始位置,默认值为None
,即从 0 开始。可以是单个数值或与x
长度相同的数组。align
(可选):柱子的对齐方式,有'center'
(居中对齐,默认值)和'edge'
(边缘对齐)两种选项。当align='edge'
时,还可以通过width
的正负来控制柱子是向左还是向右对齐。data
(可选):如果提供了data
参数,则x
和height
可以是data
对象中的列名。**kwargs
:其他可选参数,用于设置柱子的外观,例如:color
:柱子的颜色,可以是单个颜色值或与x
长度相同的颜色列表。edgecolor
:柱子边框的颜色。linewidth
:柱子边框的宽度。tick_label
:每个柱子对应的刻度标签。hatch
:柱子的填充样式,如'/'
、'\\'
、'|'
等。
【示例】
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x=[1,2,3,4,5]
y=[5,5,4,6,6]
plt.bar(x,y,width=0.5,color="c",align="center",tick_label=["a","b","c","d","e"],hatch="/")
plt.xlabel("箱子编号")
plt.ylabel("箱子重量(kg)")
plt.title("示例")
plt.show()
【运行结果】
2.2 函数barh()
绘制条形图
- 函数功能:在y轴上绘制定性数据的分布特征。
- 调用签名:
plt.barh(x,y)
plt.barh(y, width, height=0.8, left=None, align='center', **kwargs)
-
参数解释
-
y
- 类型:数值序列(如列表、数组等)。
- 作用:确定每个水平柱子在 y 轴上的位置,类似于plt.bar()
中的x
参数,它定义了水平柱子中心对应的 y 轴坐标。width
- 类型:数值序列(如列表、数组等)。
- 作用:表示每个水平柱子的宽度,也就是柱子在 x 轴方向上的延伸长度,对应于垂直柱状图里柱子的高度。
-
height
- 类型:数值或与
y
长度相同的序列。 - 作用:水平柱子的高度,即柱子在 y 轴方向上的厚度,默认值为 0.8。你既可以传入一个单一数值让所有柱子高度相同,也可以传入一个序列为每个柱子单独指定高度。
- 类型:数值或与
-
left
- 类型:数值或与
y
长度相同的序列。 - 作用:水平柱子左侧的起始位置,默认值为
None
,即从 x 轴的 0 位置开始。同样,既可以是一个统一的数值,也可以为每个柱子分别指定起始位置。
- 类型:数值或与
-
align
- 类型:字符串,可选值为
'center'
或'edge'
。 - 作用:指定柱子的对齐方式。
'center'
(默认值)表示柱子在y
指定的位置处居中显示;'edge'
表示柱子的边缘与y
指定的位置对齐。
- 类型:字符串,可选值为
-
**kwargs
- 类型:关键字参数。
- 作用:用于设置柱子的其他外观属性,常见的有:
color
:柱子的颜色,可以是单个颜色值(如'r'
代表红色),也可以是与y
长度相同的颜色列表,为每个柱子指定不同颜色。edgecolor
:柱子边框的颜色。linewidth
:柱子边框的宽度。tick_label
:每个柱子对应的刻度标签,是一个字符串列表,用于在 y 轴上标记每个柱子的含义。hatch
:柱子的填充样式,例如'/'
、'\\'
、'|'
等,能让柱子呈现不同的填充效果。
-
【 示例代码】
import matplotlib.pyplot as plt
# 定义数据
y = [1, 2, 3, 4, 5]
width = [5, 5, 4, 6, 6]
# 绘制水平柱状图
plt.barh(y, width, height=0.6, left=1, align='edge', color='g', tick_label=['A', 'B', 'C', 'D', 'E'])
# 添加标题和坐标轴标签
plt.title('水平柱状图示例')
plt.xlabel('数值')
plt.ylabel('类别')
# 显示图形
plt.show()
2.3. plt.hist()
绘制直方图
- 函数功能:用于展示数据的分布情况,将数据划分为若干区间(bin),统计每个区间内数据的频数,并以柱状图的形式呈现。
- 调用签名:
plt.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)
- 参数解释:
x
:- 类型:数值序列(如列表、数组等)。
- 作用:输入的数据,是要进行直方图统计的数据集合。
bins
:- 类型:整数、序列或字符串。
- 作用:指定直方图的区间数量。如果是整数,则表示将数据划分为指定数量的等宽区间;如果是序列,则该序列定义了区间的边界;如果是字符串,如
'auto'
,则会自动选择合适的区间数量。
range
:- 类型:元组(min, max)。
- 作用:指定数据的取值范围,只有在该范围内的数据才会被统计,默认值为
None
,表示使用数据的最小值和最大值作为范围。
density
:- 类型:布尔值。
- 作用:如果为
True
,则直方图的面积归一化为 1,即显示的是概率密度而不是频数;默认值为False
。
weights
:- 类型:与
x
长度相同的数值序列。 - 作用:为每个数据点分配权重,用于加权统计。默认值为
None
,表示所有数据点权重相同。
- 类型:与
cumulative
:- 类型:布尔值。
- 作用:如果为
True
,则绘制累积直方图;默认值为False
。
bottom
:- 类型:数值或序列。
- 作用:指定每个柱子的底部位置,类似于
plt.bar()
中的bottom
参数。默认值为None
,表示从 0 开始。
histtype
:- 类型:字符串,可选值为
'bar'
、'barstacked'
、'step'
、'stepfilled'
。 - 作用:指定直方图的类型。
'bar'
是普通的柱状图;'barstacked'
是堆叠柱状图;'step'
是阶梯状直方图;'stepfilled'
是填充的阶梯状直方图。
- 类型:字符串,可选值为
align
:- 类型:字符串,可选值为
'left'
、'mid'
、'right'
。 - 作用:指定柱子的对齐方式。
'mid'
是默认值,表示柱子居中对齐。
- 类型:字符串,可选值为
orientation
:- 类型:字符串,可选值为
'vertical'
或'horizontal'
。 - 作用:指定直方图的方向,
'vertical'
表示垂直方向,'horizontal'
表示水平方向。
- 类型:字符串,可选值为
rwidth
:- 类型:数值。
- 作用:柱子的相对宽度,取值范围在 0 到 1 之间,用于调整柱子之间的间距。默认值为
None
,表示自动调整。
log
:- 类型:布尔值。
- 作用:如果为
True
,则使用对数刻度;默认值为False
。
color
:- 类型:单个颜色值或颜色列表。
- 作用:指定柱子的颜色。
label
:- 类型:字符串。
- 作用:为直方图添加标签,用于图例显示。
stacked
:- 类型:布尔值。
- 作用:如果为
True
,则将多个数据集的直方图堆叠在一起;默认值为False
。
**kwargs
:- 类型:关键字参数。
- 作用:其他可选参数,用于设置柱子的外观,如
edgecolor
(边框颜色)、linewidth
(边框宽度)等。
- 示例代码:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
data = np.random.randn(1000)
# 绘制直方图
plt.hist(data, bins=20, color='b', edgecolor='k')
# 添加标题和坐标轴标签
plt.title('直方图示例')
plt.xlabel('数值')
plt.ylabel('频数')
# 显示图形
plt.show()
2.4 plt.pie()
绘制饼图
- 函数功能:用于展示各部分数据占总体的比例关系,将一个圆划分为若干扇形,每个扇形的面积表示该部分数据占总体的比例。
- 调用签名:
plt.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=True, hatch=None, data=None)
- 参数解释:
x
:- 类型:数值序列(如列表、数组等)。
- 作用:输入的数据,表示各部分的数值大小。这些数值将被归一化为占总体的比例。
explode
:- 类型:与
x
长度相同的数值序列。 - 作用:指定每个扇形与圆心的偏移量,用于突出显示某些部分。默认值为
None
,表示所有扇形都不偏移。
- 类型:与
labels
:- 类型:字符串列表。
- 作用:为每个扇形添加标签,用于说明各部分的含义。默认值为
None
,表示不显示标签。
colors
:- 类型:颜色列表。
- 作用:指定每个扇形的颜色。默认值为
None
,表示使用默认的颜色循环。
autopct
:- 类型:字符串或函数。
- 作用:用于在扇形上显示百分比。如果是字符串,如
'%1.1f%%'
,则表示保留一位小数显示百分比;如果是函数,则可以自定义百分比的显示格式。默认值为None
,表示不显示百分比。
pctdistance
:- 类型:数值。
- 作用:百分比文本距离圆心的比例,取值范围在 0 到 1 之间。默认值为 0.6。
shadow
:- 类型:布尔值。
- 作用:如果为
True
,则为饼图添加阴影效果;默认值为False
。
labeldistance
:- 类型:数值。
- 作用:标签文本距离圆心的比例,取值范围在 0 到 1 之间。默认值为 1.1。
startangle
:- 类型:数值。
- 作用:指定饼图的起始角度,以度为单位。默认值为 0,表示从 x 轴正方向开始。
radius
:- 类型:数值。
- 作用:指定饼图的半径。默认值为 1。
counterclock
:- 类型:布尔值。
- 作用:如果为
True
,则按逆时针方向绘制饼图;默认值为True
。
wedgeprops
:- 类型:字典。
- 作用:用于设置扇形的属性,如
linewidth
(边框宽度)、edgecolor
(边框颜色)等。
textprops
:- 类型:字典。
- 作用:用于设置文本(标签和百分比)的属性,如
fontsize
(字体大小)、color
(字体颜色)等。
center
:- 类型:元组(x, y)。
- 作用:指定饼图的中心位置。默认值为
(0, 0)
。
frame
:- 类型:布尔值。
- 作用:如果为
True
,则绘制饼图的边框;默认值为False
。
rotatelabels
:- 类型:布尔值。
- 作用:如果为
True
,则标签文本将根据扇形的角度旋转;默认值为False
。
normalize
:- 类型:布尔值。
- 作用:如果为
True
,则将x
中的数值归一化为占总体的比例;默认值为True
。
hatch
:- 类型:字符串或字符串列表。
- 作用:指定扇形的填充样式,如
'/'
、'\\'
、'|'
等。
data
:- 类型:字典或
pandas
的DataFrame
。 - 作用:如果提供了
data
参数,则x
和labels
可以是data
对象中的列名。
- 类型:字典或
- 示例代码:
import matplotlib.pyplot as plt
# 定义数据
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']
# 绘制饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
# 使饼图为正圆形
plt.axis('equal')
# 添加标题
plt.title('饼图示例')
# 显示图形
plt.show()
2.5 plt.polar()
绘制极坐标图
- 函数功能:用于在极坐标系统中绘制图形,适合展示具有周期性或方向性的数据。
- 调用签名:
plt.polar(theta, r, **kwargs)
- 参数解释:
theta
:- 类型:数值序列(如列表、数组等)。
- 作用:表示极角,以弧度为单位。极角是从极轴(通常为 x 轴正方向)开始逆时针测量的角度。
r
:- 类型:数值序列(如列表、数组等)。
- 作用:表示极径,即从极点(原点)到数据点的距离。
**kwargs
:- 类型:关键字参数。
- 作用:用于设置图形的外观,如
color
(颜色)、linestyle
(线条样式)、marker
(标记样式)等。
- 示例代码:
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
theta = np.linspace(0, 2 * np.pi, 100)
r = np.sin(2 * theta)
# 绘制极坐标图
plt.polar(theta, r, color='r')
# 添加标题
plt.title('极坐标图示例')
# 显示图形
plt.show()
2.6 plt.scatter()
绘制散点图
- 函数功能:用于展示两个变量之间的关系,将数据点以散点的形式绘制在二维平面上。
- 调用签名:
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
- 参数解释:
x
:- 类型:数值序列(如列表、数组等)。
- 作用:表示数据点的 x 坐标。
y
:- 类型:数值序列(如列表、数组等)。
- 作用:表示数据点的 y 坐标。
s
:- 类型:数值或数值序列。
- 作用:指定散点的大小。如果是单个数值,则所有散点大小相同;如果是序列,则每个散点的大小由对应位置的值决定。默认值为
None
,表示使用默认大小。
c
:- 类型:颜色、颜色序列或数值序列。
- 作用:指定散点的颜色。如果是单个颜色值,则所有散点颜色相同;如果是颜色序列,则每个散点的颜色由对应位置的值决定;如果是数值序列,则会根据
cmap
参数指定的颜色映射将数值映射为颜色。默认值为None
,表示使用默认颜色。
marker
:- 类型:字符串。
- 作用:指定散点的标记样式,如
'o'
(圆形)、's'
(正方形)、'^'
(三角形)等。默认值为'o'
。
cmap
:- 类型:字符串或
matplotlib.colors.Colormap
对象。 - 作用:指定颜色映射,用于将数值序列
c
映射为颜色。默认值为None
,表示使用默认的颜色映射。
- 类型:字符串或
norm
:- 类型:
matplotlib.colors.Normalize
对象。 - 作用:用于将数值序列
c
归一化到 0 到 1 的范围,以便进行颜色映射。默认值为None
,表示使用线性归一化。
- 类型:
vmin
、vmax
:- 类型:数值。
- 作用:指定颜色映射的最小值和最大值。如果
c
是数值序列,则vmin
和vmax
用于确定颜色映射的范围。默认值为None
,表示使用c
的最小值和最大值。
alpha
:- 类型:数值,取值范围在 0 到 1 之间。
- 作用:指定散点的透明度,0 表示完全透明,1 表示完全不透明。默认值为
None
,表示使用默认透明度。
linewidths
:- 类型:数值或数值序列。
- 作用:指定散点边框的宽度。默认值为
None
,表示使用默认宽度。
edgecolors
:- 类型:颜色、颜色序列或字符串。
- 作用:指定散点边框的颜色。如果是单个颜色值,则所有散点边框颜色相同;如果是颜色序列,则每个散点边框的颜色由对应位置的值决定;如果是字符串
'face'
,则边框颜色与散点内部颜色相同。默认值为None
,表示使用默认边框颜色。
plotnonfinite
:- 类型:布尔值。
- 作用:如果为
True
,则绘制非有限值(如NaN
、inf
)的数据点;默认值为False
。
data
:- 类型:字典或
pandas
的DataFrame
。 - 作用:如果提供了
data
参数,则x
和y
可以是data
对象中的列名。
- 类型:字典或
**kwargs
:- 类型:关键字参数。
- 作用:其他可选参数,用于设置图形的属性,如
label
(标签,用于图例显示)等。
- 示例代码:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100)
# 绘制散点图
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5)
# 添加标题和坐标轴标签
plt.title('散点图示例')
plt.xlabel('X')
plt.ylabel('Y')
# 显示图形
plt.show()
2.7 plt.stem()
绘制杆状图
- 函数功能:用于绘制离散序列的数据,每个数据点用一个垂直的杆和一个标记表示,适合展示离散信号或序列。
- 调用签名:
plt.stem(x=None, y, linefmt=None, markerfmt=None, basefmt=None, bottom=0, label=None, use_line_collection=False, orientation='vertical', **kwargs)
- 参数解释:
x
:- 类型:数值序列(如列表、数组等)。
- 作用:表示数据点的 x 坐标。如果不提供,则默认为
range(len(y))
。
y
:- 类型:数值序列(如列表、数组等)。
- 作用:表示数据点的 y 坐标。
2.8
plt.boxplot()
绘制箱线图 - 函数功能:用于展示数据的分布情况,通过绘制箱子和须线,能直观地呈现数据的中位数、四分位数、异常值等统计信息,便于比较不同组数据的分布特征。
- 调用签名:
plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None, data=None)
- 参数解释:
x
:- 类型:数组或数组序列。
- 作用:输入的数据,可以是单个数据集,也可以是多个数据集组成的序列,用于绘制箱线图。
notch
:- 类型:布尔值。
- 作用:如果为
True
,则绘制带缺口的箱线图,缺口表示中位数的置信区间;默认值为False
。
sym
:- 类型:字符串。
- 作用:指定异常值的标记样式,如
'o'
表示圆形,'*'
表示星号等。默认值为'b+'
,即蓝色的加号。
vert
:- 类型:布尔值。
- 作用:如果为
True
,则绘制垂直方向的箱线图;如果为False
,则绘制水平方向的箱线图。默认值为True
。
whis
:- 类型:数值或序列。
- 作用:确定须线的长度。默认值为 1.5,表示须线延伸到四分位数间距(IQR)的 1.5 倍处;也可以传入一个序列,指定上下须线的不同延伸倍数。
positions
:- 类型:数值序列。
- 作用:指定箱线图在 x 轴(垂直箱线图)或 y 轴(水平箱线图)上的位置。默认值为
range(1, N+1)
,其中N
是数据集的数量。
widths
:- 类型:数值或数值序列。
- 作用:指定箱线图的宽度。如果是单个数值,则所有箱线图宽度相同;如果是序列,则每个箱线图的宽度由对应位置的值决定。
patch_artist
:- 类型:布尔值。
- 作用:如果为
True
,则使用Patch
对象绘制箱子,便于设置箱子的填充颜色等属性;默认值为False
。
showfliers
:- 类型:布尔值。
- 作用:如果为
True
,则显示异常值;默认值为True
。
labels
:- 类型:字符串列表。
- 作用:为每个箱线图添加标签,用于说明不同组数据的含义。
boxprops
:- 类型:字典。
- 作用:用于设置箱子的属性,如
color
(颜色)、linewidth
(边框宽度)等。
flierprops
:- 类型:字典。
- 作用:用于设置异常值的属性,如
markerfacecolor
(标记填充颜色)、markeredgecolor
(标记边框颜色)等。
medianprops
:- 类型:字典。
- 作用:用于设置中位数线的属性,如
color
(颜色)、linewidth
(线宽)等。
meanprops
:- 类型:字典。
- 作用:用于设置均值线的属性(如果显示均值),如
color
(颜色)、linestyle
(线条样式)等。
capprops
:- 类型:字典。
- 作用:用于设置须线端点(帽)的属性,如
color
(颜色)、linewidth
(线宽)等。
whiskerprops
:- 类型:字典。
- 作用:用于设置须线的属性,如
color
(颜色)、linestyle
(线条样式)等。
- 示例代码:
import matplotlib.pyplot as plt
import numpy as np
# 生成三组随机数据
data1 = np.random.normal(100, 10, 200)
data2 = np.random.normal(90, 20, 200)
data3 = np.random.normal(80, 30, 200)
data = [data1, data2, data3]
# 绘制箱线图
plt.boxplot(data, labels=['A', 'B', 'C'])
# 添加标题和坐标轴标签
plt.title('箱线图示例')
plt.ylabel('数值')
# 显示图形
plt.show()
2.9 plt.errorbar()
绘制误差线图
- 函数功能:用于展示数据点及其误差范围,在数据存在测量误差或不确定性时非常有用,能直观地反映数据的可靠性。
- 调用签名:
plt.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, *, data=None, **kwargs)
- 参数解释:
x
:- 类型:数值序列(如列表、数组等)。
- 作用:表示数据点的 x 坐标。
y
:- 类型:数值序列(如列表、数组等)。
- 作用:表示数据点的 y 坐标。
yerr
:- 类型:数值、数值序列或二维数组。
- 作用:指定 y 方向的误差范围。如果是单个数值,则所有数据点的误差相同;如果是序列,则每个数据点的误差由对应位置的值决定;如果是二维数组,则分别表示上下误差。
xerr
:- 类型:数值、数值序列或二维数组。
- 作用:指定 x 方向的误差范围,用法与
yerr
类似。
fmt
:- 类型:字符串。
- 作用:指定数据点的标记样式和线条样式,如
'ro-'
表示红色圆形标记并用实线连接。
ecolor
:- 类型:颜色。
- 作用:指定误差线的颜色。默认值为
None
,表示使用与数据点相同的颜色。
elinewidth
:- 类型:数值。
- 作用:指定误差线的宽度。默认值为
None
,表示使用默认宽度。
capsize
:- 类型:数值。
- 作用:指定误差线端点帽的大小。默认值为
None
,表示使用默认大小。
barsabove
:- 类型:布尔值。
- 作用:如果为
True
,则误差线绘制在数据点之上;默认值为False
。
lolims
、uplims
、xlolims
、xuplims
:- 类型:布尔值。
- 作用:用于指定误差范围是否为单边限制,如
lolims=True
表示 y 方向的下误差为单边限制。
errorevery
:- 类型:整数或序列。
- 作用:指定每隔多少个数据点绘制误差线。如果是整数,则每隔指定数量的点绘制;如果是序列,则只在序列指定的位置绘制。
capthick
:- 类型:数值。
- 作用:指定误差线端点帽的厚度。默认值为
None
,表示使用默认厚度。
- 示例代码:
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
y_err = np.array([0.5, 1, 1.5, 2, 2.5])
# 绘制误差线图
plt.errorbar(x, y, yerr=y_err, fmt='o', color='b', ecolor='r', capsize=5)
# 添加标题和坐标轴标签
plt.title('误差线图示例')
plt.xlabel('X')
plt.ylabel('Y')
# 显示图形
plt.show()