1 区域填充图plt.fill_between()
plt.fill_between
是 Matplotlib 中用于绘制区域填充图的函数。它可以在两个曲线之间或曲线与坐标轴之间绘制填充区域。这个函数常用于表示误差范围、置信区间、阴影区域等可视化需求。plt.fill_between
函数的使用方法以及常用参数的含义如下:
fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, **kwargs)
x
:x 轴的值,可以是一个数组或序列。y1
:填充区域下边界的 y 值,可以是一个数组或序列。y2
:填充区域上边界的 y 值,默认为 0,表示与 x 轴之间的填充区域。可以是一个数组或序列。where
:条件数组,用于指定应该填充的区域。默认为 None,表示填充整个 x 范围。如果提供了一个布尔数组,数组为 True 的位置将被填充,False 的位置将保持不变。interpolate
:如果为 True,在非连续点之间进行插值以填充区域。默认为 False。step
:如果指定为 ‘pre’ 或 ‘post’,则在非连续点之间进行阶梯插值以填充区域。默认为 None,表示不使用阶梯插值。color
:填充区域的颜色。可以是一个字符串(如'blue'
、'#FF0000'
)或表示颜色的 RGB 元组(如(0, 0, 1)
表示蓝色)。默认为None
,表示使用默认颜色。alpha
:填充区域的透明度,范围从 0 到 1。0 表示完全透明,1 表示完全不透明。默认为None
,表示使用默认透明度。edgecolor
:填充区域的边界颜色。可以是一个字符串或颜色的 RGB 元组。默认为None
,表示无边界颜色。linewidth
:填充区域的边界线宽度。默认为None
,表示使用默认线宽。linestyle
:填充区域的边界线样式。可以是一个字符串(如'solid'
、'dashed'
、'dashdot'
、'dotted'
)或线型代码(如'-'
、'--'
、'-.'
、':'
)。默认为None
,表示使用默认线型。label
:填充区域的标签,用于图例显示。
绘图示例如下:
import matplotlib.pyplot as plt
import numpy as np
# 创建示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制填充区域图
plt.fill_between(x, y1, y2, color='blue', alpha=0.3, edgecolor='black', linewidth=2, linestyle='--', label='Fill Area')
# 设置图形属性
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Fill Between')
plt.grid(True)
plt.legend()
# 显示图形
plt.show()
2 区域堆叠图 plt.stackplot()
plt.stackplot(x, y)
是Matplotlib库中的一个函数,用于绘制堆叠区域图。堆叠区域图用于显示多个数据系列的相对贡献,并展示它们在整体中的总和变化。plt.stackplot(x, y)
函数用于绘制堆叠区域图,其中参数的含义如下:
stackplot(x, y, labels=None, colors=None, baseline='zero', alpha=1.0,
edgecolor=None, linewidth=None)
-
x
:横坐标数据,可以是一个一维数组或列表,表示各个数据点的位置。 -
y
:纵坐标数据,可以是一个二维数组或列表的列表,每个子列表代表一个数据系列。每个数据系列的长度应与x的长度相同。 -
labels
:可选参数,用于设置每个数据系列的标签,可以是一个字符串列表或元组。标签将在图例中显示。 -
colors
:可选参数,用于设置每个数据系列的颜色。可以是一个颜色字符串,也可以是一个颜色字符串列表或元组。如果提供的颜色数目少于数据系列数目,则颜色会进行循环重复使用。 -
baseline
:可选参数,用于设置堆叠区域图的基线。默认值为’zero’,表示从0开始堆叠。也可以指定一个数组或列表来设置基线值。 -
alpha
:可选参数,用于设置堆叠区域图的透明度。取值范围为0到1之间,0表示完全透明,1表示完全不透明。 -
edgecolor
:可选参数,用于设置堆叠区域图的边缘颜色。可以是一个颜色字符串或一个颜色字符串列表或元组。 -
linewidth
:可选参数,用于设置堆叠区域图的边缘线宽度。默认值为None,表示使用默认线宽。
注意:x和y的长度必须相同,且y中的每个子列表的长度也必须相同。
下面是一个示例:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [
[1, 2, 3, 4, 5], # 第一个数据系列
[2, 3, 4, 5, 6], # 第二个数据系列
[3, 4, 5, 6, 7] # 第三个数据系列
]
labels = ['Series 1', 'Series 2', 'Series 3']
colors = ['red', 'green', 'blue']
plt.stackplot(x, y, labels=labels, colors=colors)
plt.legend()
plt.show()
3 小提琴图 plt.violinplot()
小提琴图(Violin Plot)是一种常用的数据可视化方法,用于显示数值数据的分布情况。它结合了箱线图和核密度估计,可以展示数据的中位数、四分位数、分布形状等信息。在Matplotlib中,可以使用violinplot()
函数绘制小提琴图。violinplot()
函数用于绘制小提琴图,其中参数的含义如下:
plt.violinplot(dataset, positions=None, vert=True, widths=0.5, showmeans=False,
showextrema=True, showmedians=False, points=100, bw_method=None, *, data=None)
dataset
:数据集,可以是一个一维或二维的数组、列表或Series对象。如果是一个一维数组或列表,将绘制单个小提琴图。如果是一个二维数组、列表或Series对象,每列将绘制一个小提琴图。positions
:可选参数,用于设置每个小提琴图的位置。可以是一个一维数组或列表,长度与数据集的列数相同。vert
:可选参数,用于设置小提琴图的方向。默认值为True
,表示绘制垂直方向的小提琴图。如果设置为False
,则绘制水平方向的小提琴图。widths
:可选参数,用于设置小提琴图的宽度。可以是一个标量值或一个一维数组,指定每个小提琴图的宽度。默认值为0.5。showmeans
:可选参数,用于设置是否显示均值。默认值为False
,表示不显示均值。showextrema
:可选参数,用于设置是否显示最大值和最小值。默认值为True
,表示显示最大值和最小值。showmedians
:可选参数,用于设置是否显示中位数。默认值为False
,表示不显示中位数。points
:可选参数,用于设置核密度估计的点数。默认值为100。bw_method
:可选参数,用于设置核密度估计的带宽方法。可以是一个字符串,表示带宽确定的方法,也可以是一个标量值。默认值为None,表示使用默认的带宽方法。
除了上述参数外,violinplot()
函数还可以使用其他常用的Matplotlib关键字参数进行进一步的设置,例如color
、linewidth
、labels
等。
下面是一个示例:
import matplotlib.pyplot as plt
import numpy as np
# 创建示例数据
np.random.seed(123)
data = [np.random.normal(0, std, 100) for std in range(1, 4)]
# 绘制小提琴图
plt.violinplot(data, positions=[1, 2, 3], showmedians=True)
plt.xlabel('Group')
plt.ylabel('Value')
plt.title('Violin Plot')
plt.show()
在上述示例中,我们使用np.random.normal()
函数生成了三组正态分布的示例数据。然后,我们使用plt.violinplot()
函数绘制了三个小提琴图,每个小提琴图对应一个数据组。使用positions
参数设置小提琴图的位置,使用showmedians
参数显示中位数。最后,我们添加了坐标轴标签和标题,并使用plt.show()
显示图形。