You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为joypy脊线图的直方图子图设置不同颜色?

如何为joypy脊线直方图的各子图设置不同颜色?

我尝试创建脊线图(ridgeline plot),希望每个子图使用不同颜色。最初通过以下代码实现了颜色设置,但生成的不是直方图:

import joypy
import numpy as np

fig, axes = joypy.joyplot(log_df, color=["k","b","r","g"])

为生成直方图,我修改代码为:

fig, axes = joypy.joyplot(log_df, fill= True, hist= True, bins=128, overlap = 0, color=["k","b","r","g"])

此时出现报错:

The 'color' keyword argument must have one color per dataset, but 1 datasets and 4 colors were provided

该报错仅在绘制直方图时出现,我想知道如何为脊线直方图的各子图设置不同颜色?


解决方法

当启用hist=True时,joypy的参数处理逻辑会发生变化,直接通过color参数传递多色列表会出现数据集与颜色数量不匹配的问题。可以在绘制完成后,手动遍历每个子图,修改其直方图的颜色属性:

import joypy
import numpy as np
import pandas as pd

# 示例数据:包含4列的DataFrame,对应4个脊线子图
log_df = pd.DataFrame(np.random.randn(1000, 4), columns=["Col1", "Col2", "Col3", "Col4"])

# 绘制脊线直方图(先不指定color参数)
fig, axes = joypy.joyplot(log_df, fill=True, hist=True, bins=128, overlap=0)

# 定义每个子图对应的颜色列表
colors = ["k", "b", "r", "g"]

# 遍历子图和颜色,逐个设置直方图颜色
for ax, color in zip(axes, colors):
    # 获取子图中的所有直方图色块
    for patch in ax.patches:
        patch.set_facecolor(color)  # 设置填充颜色
        patch.set_edgecolor(color)  # 设置边缘颜色(可选,根据需求调整)

这段代码的核心是:每个脊线子图对应axes数组中的一个元素,子图内的直方图由多个patch对象组成,直接修改这些patch的颜色属性,就能实现每个子图的直方图使用不同颜色的效果。

内容的提问来源于stack exchange,提问作者Anthi - Maria Kouvatsou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:22:44