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

Plotly自定义轴序传入numpy数组报错,如何修复?

修复Plotly热图自定义轴排序的ValueError问题

问题根源

触发ValueError的核心原因是:调用waterFlip时传入了字符串'Y1_order'、'Y2_order',但Plotly的categoryarray参数要求接收实际的numpy数组对象,而非变量名的字符串形式。

修复步骤

  1. 直接传入numpy数组对象
    把代码中传入的字符串替换成你已经转换好的numpy数组变量(比如Y1_order、Y2_order、X_order),不要加引号。

  2. 确保数组与轴标签匹配
    自定义排序的数组元素必须和热图数据中X/Y轴的标签完全一致(包括大小写、空格、格式),否则排序规则不会生效,不匹配的标签会被默认放到轴的末尾。

示例代码

假设你已经完成了DataFrame到numpy数组的转换:

# 从DataFrame转换为numpy数组(你的现有代码)
Y1_order = Y1_order_df.to_numpy()
Y2_order = Y2_order_df.to_numpy()
X_order = X_order_df.to_numpy()

# 调用waterFlip时传入实际数组(核心修复)
fig.waterFlip(
    yaxis_categoryarray=Y1_order,  # 替换原字符串'Y1_order'
    yaxis2_categoryarray=Y2_order, # 替换原字符串'Y2_order'
    xaxis_categoryarray=X_order
)

如果waterFlip是通过update_layout实现轴配置,代码类似:

fig.update_layout(
    yaxis=dict(
        categoryorder='array',
        categoryarray=Y1_order  # 直接传数组
    ),
    yaxis2=dict(
        categoryorder='array',
        categoryarray=Y2_order
    ),
    xaxis=dict(
        categoryorder='array',
        categoryarray=X_order
    )
)

额外检查点

  • 确认numpy数组的dtype:如果轴标签是字符串,数组应为object类型(默认转换后就是);如果是数值,数组类型要和轴数据一致。
  • 打印数组内容,确保元素顺序完全符合你的自定义排序需求。

内容的提问来源于stack exchange,提问作者Billy Noonan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:05:19