python修改抖动图facecolor和箱型图alpha

抖动图和箱型图在数据分析和可视化中具有重要的作用,可以帮助人们更好地理解数据的特征和变化趋势。当我们想使用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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值