抖动图和箱型图在数据分析和可视化中具有重要的作用,可以帮助人们更好地理解数据的特征和变化趋势。当我们想使用Python绘制抖动图的时候,可以使用seaborn的库来绘制,但其自身的参数限制了我们更改facecolor,绘制箱型图使更改透明度也难以更改,因接下来将针对这个问题进行解决
seaborn.stripplot的具体参数如下:
seaborn.stripplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, jitter=True, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor=, linewidth=0, hue_norm=None, log_scale=None, native_scale=False, formatter=None, legend=‘auto’, ax=None, **kwargs)
正常的抖动图
然而当你想要设置facecolor时会发现这个参数不起作用,实际上Python绘图本质是一系列的patch及collections等绘制,因此可以访问带内部的collections来修改颜色
import seaborn as sns
import matplotlib.pyplot as plt# 示例数据
tips = sns.load_dataset("tips")# 创建调色板
palette = sns.color_palette("tab10", n_colors=len(tips['day'].unique()))# 绘制散点图
ax = sns.stripplot(x="day", y="total_bill", data=tips, palette=palette)# 获取每个点的颜色并设置为边缘颜色,填充颜色设置为透明
for i, artist in enumerate(ax.collections):col = artist.get_facecolor()artist.set_edgecolor(col)artist.set_facecolor((1, 1, 1, 0)) # 设置为完全透明artist.set_linewidth(1.5)# 显示图表
plt.show()
seaborn.boxplot箱型图的参数如下
这里面并没有透明度alpha参数
seaborn.boxplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, fill=True, dodge=‘auto’, width=0.8, gap=0, whis=1.5, linecolor=‘auto’, linewidth=None, fliersize=None, hue_norm=None, native_scale=False, log_scale=None, formatter=None, legend=‘auto’, ax=None, **kwargs)
同样的思路也可以设置seaborn箱型图的透明度
import seaborn as sns
import matplotlib.pyplot as plt# 示例数据
tips = sns.load_dataset("tips")# 创建调色板
palette = sns.color_palette("pastel")# 绘制散点图
bp = sns.boxplot(x="day", y="total_bill", data=tips, palette=palette, hue="day",fill=True)# 循环遍历所有的'boxes'(即bp.artists)并设置边缘和填充颜色
# 设置盒子、四分位线和误差棒的颜色
for i, patch in enumerate(bp.patches):r, g, b, a = patch.get_facecolor()patch.set_facecolor((r, g, b, 0.5)) # 设置盒子的透明度patch.set_edgecolor((r, g, b)) # 设置盒子的边缘颜色# 设置对应的四分位线和误差棒的颜色for j in range(6*i, 6*i+6):line = bp.lines[j]line.set_color((r, g, b))
# 显示图表
plt.show()