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

如何在Plotly中为单个X值绘制多Y值并设置渐变色彩?

问题描述

我有一个类似如下结构的字典:

MTUS = {'0':MTU_1,'1':MTU_2, '2':MTU_3}

其中每个MTU_X是包含96个不同值的序列,实际字典包含24个元素。我希望以字典的键为X轴,序列中的值为Y轴,实现每个X值对应96个Y点。我尝试了如下代码:

x = list(MTUS.keys())
y = list(MTUS.values())

fig = px.scatter(x=range(len(MTUS)), y=y, title="Forecast distribution for 01/01/2023")

但出现错误:

ValueError: All arguments should have the same length. The length of argument `wide_variable_0` is 96, whereas the length of  previously-processed arguments ['x'] is 2

请问如何实现将单个MTUX序列的所有值绘制到对应X值上?同时能否为每个X的Y值设置跨所有X值一致的渐变色彩?

解决方案

1. 解决数据长度不匹配问题

报错核心原因是x的长度为24(字典元素数量),但y是24个各含96个元素的序列,Plotly要求输入的x和y必须长度一致。需要将数据转换为长格式:让每个X值对应96条独立记录,每条记录包含X值和对应的Y值。

用列表推导式快速转换:

# 生成等长的x和y列表
x_long = [key for key, seq in MTUS.items() for _ in seq]
y_long = [val for seq in MTUS.values() for val in seq]

转换后x_long和y_long的长度均为24*96=2304,满足Plotly的输入要求。

2. 绘制带统一渐变色彩的散点图

要实现跨所有X值的统一渐变色彩,直接基于全局Y值范围映射颜色即可。使用color=y_long参数,Plotly会自动根据所有Y值的分布生成渐变色彩:

import plotly.express as px

fig = px.scatter(
    x=x_long, 
    y=y_long, 
    color=y_long,  # 基于Y值设置全局渐变色彩
    color_continuous_scale='viridis',  # 可选:指定配色方案,如'plasma'、'rainbow'等
    title="Forecast distribution for 01/01/2023"
)
fig.show()

若需自定义色彩范围,可通过range_color参数手动指定:

# 计算Y值的全局最小/最大值
y_min = min(y_long)
y_max = max(y_long)

fig = px.scatter(
    x=x_long, 
    y=y_long, 
    color=y_long,
    range_color=[y_min, y_max],  # 强制色彩范围覆盖所有Y值
    color_continuous_scale='plasma',
    title="Forecast distribution for 01/01/2023"
)
fig.show()

3. 可选:用Pandas简化数据处理

如果数据量较大,使用Pandas DataFrame处理会更直观:

import pandas as pd
import plotly.express as px

# 将字典转换为长格式DataFrame
df = pd.DataFrame(
    [(key, val) for key, seq in MTUS.items() for val in seq],
    columns=['X轴', 'Y轴']
)

fig = px.scatter(
    df, 
    x='X轴', 
    y='Y轴', 
    color='Y轴',
    color_continuous_scale='viridis',
    title="Forecast distribution for 01/01/2023"
)
fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:40:22