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

Python绘制直方图叠加散点图报x and y must be the same size错误求解

问题原因排查
  • 报错核心原因是plt.scatter传入的x、y参数长度不一致:
    1. np.histogram未指定bins参数时默认将数据分为10组,返回的counts数组长度固定为10,代表每组的密度值
    2. 你自行生成的p = np.arange(0.001, 100000, 0.01)数组长度接近1000万,和长度为10的counts完全不匹配,因此触发尺寸校验报错
  • 额外问题:你自定义的p数组和直方图的bin区间没有对应关系,即使强行调整长度一致,也无法让散点正确叠加到直方图的对应位置上。
修复方案

如果需要在直方图的每个bin的中心点位置叠加散点,直接基于np.histogram返回的bins数组计算每个bin的中点作为x坐标即可,不需要自定义p数组,参考代码如下:

import numpy as np
import matplotlib.pyplot as plt

# 原有直方图绘制逻辑(你之前已经正常渲染的部分保留即可)
plt.hist(ppthdf['PPth'], density=True, bins=10) # bins数量要和下面histogram调用的一致

# 计算直方图数据和bin中点
counts, bins = np.histogram(ppthdf['PPth'], density=True, bins=10)
bin_centers = (bins[:-1] + bins[1:]) / 2 # 计算每个bin的中心点坐标

# 叠加散点
plt.scatter(bin_centers, counts, s=100, c='red')
plt.show()

如果需要调整分组数量,统一修改两处bins参数的数值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:33:03