Python:蜂群图覆盖了箱形图中的中线
Python: swarm plot covers the median line in box plot
在箱形图上绘制群图(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)
(做大图不行)
我直接想到了两个选项:
使群图半透明。这可以通过添加 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()
在群图点上方显示中线。这可以通过通过 medianprops
关键字参数传递的字典指定中线的 zorder
来完成。
sns.boxplot(x='a',data=data, ax = axes, color="gold", medianprops={"zorder":3})
在这种情况下,通过medianprops={"zorder":3, "alpha":0.6}
使中线半透明也是可以的。
当然,这两个选项的任意组合也可以提供帮助。
在箱形图上绘制群图(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)
(做大图不行)
我直接想到了两个选项:
使群图半透明。这可以通过添加
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()
在群图点上方显示中线。这可以通过通过
medianprops
关键字参数传递的字典指定中线的zorder
来完成。sns.boxplot(x='a',data=data, ax = axes, color="gold", medianprops={"zorder":3})
在这种情况下,通过medianprops={"zorder":3, "alpha":0.6}
使中线半透明也是可以的。
当然,这两个选项的任意组合也可以提供帮助。