matplotlib 数据框的等高线图:Z维出错

cbwuti44  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(125)

当从pandas数据框制作填充等高线图时,每次都会发生以下错误。我已经交叉检查了Z的尺寸,它是2-D,仍然出现错误。

TypeError: Input z must be 2D, not 3D

个字符
我不知道我错在哪里,也不知道如何解决这个问题。

xlpyo6sf

xlpyo6sf1#

调用签名为contourf(Z)contourf(X, Y, Z)。文档中的[X,Y,]符号令人困惑,但这意味着如果需要,您可以传递这些符号。但是因为你实际上把它放在了括号里,所以你创建了一个3D数组,matplotlib将其解释为Z参数。但你还有两个问题。

  1. Y需要转换为数值类型,您可以通过将y定义更改为y = df.columns.astype(float)来完成此操作。
  2. Z是它应该是什么的转置,但可以通过执行Z = df.values.T来修复。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

data = {'10.2': [72,57,56,67,69,136], 
        '10.6':[31,23,19,17,41,74],
        '10.9': [27,96,97,99,18,40], 
        '11.3':[10,98,100,35,67,258], 
        '11.8':[124,92,49,24,88,209]}

df = pd.DataFrame(data)

x = df.index
y = df.columns.astype(float)
X, Y = np.meshgrid(x,y)

Z = df.values.T
c = plt.contourf(X, Y, Z)

字符串


的数据

相关问题