matplotlib:填充箱线图和点显示

matplotlib: filled boxplot and point display

我想显示用颜色填充的箱形图,并允许我在它们上面显示一个点(每个数据集的平均值)。

到目前为止,我只成功显示了带有平均点数的未填充条:

import numpy as np
import pandas as pdK
import matplotlib.pyplot as plt
from matplotlib import rcParams
%matplotlib inline

X = np.random.rand(20)
Y = np.random.rand(20)
Z = np.random.rand(20) 
X_ave=np.mean(X)
Y_ave=np.mean(X)
Z_ave=np.mean(X)
plt.boxplot([X,Y,Z], patch_artist=False)
plt.plot(1, X_ave,'*', markersize=15)
plt.plot(2, Y_ave,'*', markersize=15)
plt.plot(3, Y_ave,'*', markersize=15)
#plt.boxplot(box_plot_data)
plt.show()

一旦我通过设置 patch_artist=True 填充了箱线图,平均值就会被箱子的颜色覆盖并且不再显示。

X = np.random.rand(20)
Y = np.random.rand(20)
Z = np.random.rand(20) 
X_ave=np.mean(X)
Y_ave=np.mean(X)
Z_ave=np.mean(X)
plt.plot(1, X_ave,'*', markersize=15)
plt.plot(2, Y_ave,'*', markersize=15)
plt.plot(3, Y_ave,'*', markersize=15)
plt.boxplot([X,Y,Z], patch_artist=True)
#plt.boxplot(box_plot_data)
plt.show()

平均标记隐藏在箱线图的方框后面。与标记相比,将框放在背景中将再次显示它们。最简单的方法是为箱线图指定 zorder

plt.boxplot([X,Y,Z], patch_artist=True, zorder=1)

完整示例:

import numpy as np
import pandas as pdK
import matplotlib.pyplot as plt

X = np.random.rand(20)
Y = np.random.rand(20)
Z = np.random.rand(20) 
X_ave=np.mean(X)
Y_ave=np.mean(X)
Z_ave=np.mean(X)
plt.boxplot([X,Y,Z], patch_artist=True, boxprops=dict(facecolor="purple"), zorder=1)
plt.plot(1, X_ave,'*', markersize=15)
plt.plot(2, Y_ave,'*', markersize=15)
plt.plot(3, Y_ave,'*', markersize=15)

plt.show()

当然,您也可以将标记图的 zorder 指定为 3 或任何更高的值。