在箱形图上绘制群体图(seaborn)时,这些点可能会覆盖箱形图的中线。 我怎样才能使斑点图更加透明,这样我才能看到盒子图的中位数?
在图中我们看不到中线,因为它被点覆盖,所以,光学上我不知道第二个框上的中位数。是否有可能使群体图的点更透明,以便我也看到中线?
示例:
fig, axes = plt.subplots(nrows=1, ncols=1,figsize=(6,2))
data = pd.DataFrame({'a':[3,3,3,3,4,5,6,8,11,11,8,7,7,7,7,7,7,3,3,3,3,3,7,7,7,7,7,7,7,7,7,7,7,8,9,10,11,12,11,11,11]})
sns.boxplot(x='a',data=data, ax = axes)
ax = sns.swarmplot(x='a', data=data, color = 'grey', ax = axes)
(使无花果更大不是一种选择)
答案 0 :(得分:0)
我直接想到两个选择:
让swarmplot半透明。这可以通过添加alpha
参数来完成,例如alpha=0.5
半透明。当然,背景中的条纹越暗,点就越不明显(因此我在这里变黄)。
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
fig, axes = plt.subplots(figsize=(6,2))
data = pd.DataFrame({'a':[3,3,3,3,4,5,6,8,11,11,8,7,7,7,7,7,7,3,3,
3,3,3,7,7,7,7,7,7,7,7,7,7,7,8,9,10,11,12,11,11,11]})
sns.boxplot(x='a',data=data, ax = axes, color="gold")
sns.swarmplot(x='a', data=data, color = 'grey', ax = axes, alpha=0.5)
plt.show()
在swarmplot积分之上显示中线。这可以通过通过zorder
关键字参数传递的字典指定中线的medianprops
来完成。
sns.boxplot(x='a',data=data, ax = axes, color="gold", medianprops={"zorder":3})
当然,这两种选择的任何组合都可以提供帮助。