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

如何基于12个月度数组为散点图创建月份关联的颜色映射?

解决基于月份组数值的散点图颜色映射问题

我懂你要实现的效果——让每个散点的颜色对应它所属月份组里的split_data1数值,对吧?你之前的代码出问题的核心原因是:给plt.scatter的c参数传了二维数组split_data1(形状(12,30)),但这个参数需要和散点总数(360个)匹配的一维数组。咱们来修正这个问题:

核心解决方案:生成匹配形状的颜色数组

你已经把数据集重塑成了一维的split_months_reshape_data1和split_months_reshape_data2,那只需要把split_data1也按同样的规则重塑成一维数组,就能让每个点的颜色完美对应它所在月份组的数值。

完整代码示例

import matplotlib.pyplot as plt
import numpy as np

# 生成原始数据
data1 = np.random.rand(360)
data2 = np.random.rand(360)

# 按月份分组的函数
def split_months(monthly_data):
    month_split = []
    for month in range(12):
        month_split.append(monthly_data[month::12])
    return np.array(month_split)

# 分组并重塑数据集
split_data1 = split_months(data1)
split_data2 = split_months(data2)
split_months_reshape_data1 = split_data1.reshape(12*30)
split_months_reshape_data2 = split_data2.reshape(12*30)

# 关键:生成和散点数量匹配的颜色数组
color_values = split_data1.reshape(12*30)

# 绘制散点图
plt.scatter(split_months_reshape_data1, split_months_reshape_data2, c=color_values, cmap='viridis')
plt.colorbar(label='Month Group Value from split_data1')
plt.xlabel('Reshaped Data 1')
plt.ylabel('Reshaped Data 2')
plt.title('Scatter Plot with Month-Based Value Color Mapping')
plt.show()

代码解释

  • color_values = split_data1.reshape(12*30):这个操作把(12,30)的二维数组转成和散点数量一致的一维数组,顺序和你重塑后的数据集完全对应——所有年份的1月数据在前,接着是2月,以此类推。这样每个点的颜色就会对应它所在月份组里的split_data1数值。
  • 你可以替换cmap参数选择不同的配色方案,比如plasma、coolwarm等,满足可视化需求。

可选:如果想按月份(1-12)区分颜色

如果你其实是想让每个月份的点用统一的颜色(而不是用组内数值),可以生成一个月份标签数组,代码如下:

# 生成月份标签:1到12每个数字重复30次,共360个
month_labels = np.repeat(np.arange(1,13), 30)

plt.scatter(split_months_reshape_data1, split_months_reshape_data2, c=month_labels, cmap='tab10')
plt.colorbar(ticks=np.arange(1,13), label='Month (1-12)')
plt.xlabel('Reshaped Data 1')
plt.ylabel('Reshaped Data 2')
plt.title('Scatter Plot with Month Category Color Mapping')
plt.show()

这样每个月份的点会用同一种颜色,颜色条会显示对应的月份编号,方便区分不同月份的数据分布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:22:41