Python matplotlib:填充箱线图和点显示

Python matplotlib:填充箱线图和点显示,python,matplotlib,plot,boxplot,Python,Matplotlib,Plot,Boxplot,我想显示用颜色填充的方框图,并且允许我在它们上面显示一个点(每个数据集的平均值) 到目前为止,我只成功地显示了未填充的条带平均点: 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.

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

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

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
或更高的值。

平均标记隐藏在箱线图的框后面。将框放置在背景中,与标记进行比较,将再次显示它们。最简单的方法是为箱线图指定
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
或更高的值