调用distrobution.plot绘散点图报错‘x与y必须尺寸相同’,求原因
问题原因及解决方案
错误原因
你调用distrobution.plot()绘制散点图时,x参数传入了两个列名(["Observed", "Modelled"]),而y参数仅传入了一个列名(["Amount (mm)"])。
散点图的核心逻辑是需要一对一的数值对:每个x值必须对应一个y值。当你给x传入多列时,pandas会将这两列数据合并为二维数组,而y对应的是一维数组,两者维度不匹配,因此触发x and y must be the same size错误。
解决方案
根据你的需求,有两种常见处理方式:
1. 同一坐标轴上分别绘制两个散点图
如果想同时展示Observed与Amount (mm)、Modelled与Amount (mm)的散点关系,可以复用同一个坐标轴:
# 先绘制Observed的散点图,获取坐标轴对象 ax = distrobution.plot(x="Observed", y="Amount (mm)", kind="scatter", label="Observed", color="steelblue") # 在同一坐标轴上绘制Modelled的散点图 distrobution.plot(x="Modelled", y="Amount (mm)", kind="scatter", label="Modelled", color="tomato", ax=ax)
2. 重塑数据后绘制分组散点图
通过melt方法将数据转换为长格式,再利用hue参数区分两组数据:
# 重塑数据:将Observed和Modelled转为分组列 df_melted = distrobution.melt( id_vars=["Amount (mm)"], value_vars=["Observed", "Modelled"], var_name="Data Type", value_name="Value" ) # 绘制带分组标识的散点图 df_melted.plot(x="Value", y="Amount (mm)", kind="scatter", hue="Data Type")
内容的提问来源于stack exchange,提问作者Lawrence
相关产品推荐
相关产品推荐

