收到“ValueError:x 和 y 必须是相同长度的一维数组”,而实际上它们是相同长度的一维数组

Rus*_*das 4 numpy matplotlib python-2.7 pandas contourf

我有这个数据框:

    key variable    value
0   0.25    -0.2    606623.455859
1   0.27    -0.2    621462.029200
2   0.30    -0.2    640299.078053
3   0.33    -0.2    653686.910706
4   0.35    -0.2    659278.593742
5   0.37    -0.2    665684.466383
6   0.40    -0.2    671975.695814
7   0.25    0   530091.733402
8   0.27    0   542501.852937
9   0.30    0   557799.179433
10  0.33    0   571140.149887
11  0.35    0   575117.783803
12  0.37    0   582709.048163
13  0.40    0   588168.965913
14  0.25    0.2 466275.721535
15  0.27    0.2 478678.452615
16  0.30    0.2 492749.041489
17  0.33    0.2 500792.917910
18  0.35    0.2 503620.638204
19  0.37    0.2 507884.996510
20  0.40    0.2 512504.976664
21  0.25    0.5 351579.595889
22  0.27    0.5 359555.855803
23  0.30    0.5 368924.362358
24  0.33    0.5 375069.238800
25  0.35    0.5 377847.414729
26  0.37    0.5 381146.573247
27  0.40    0.5 383836.933547
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用此数据框和以下代码绘制等高线图:

x = df['key'].values
y = df['variable'].values
z = df['value'].values
plt.tricontourf(x, y, z, colors='k')
Run Code Online (Sandbox Code Playgroud)

我不断收到此错误:

ValueError:x和y必须是相同长度的一维数组

但每当我检查 x 和 y 的 len、.size、.shape 和 .ndim 时,它们都是相同长度的一维数组。有谁知道为什么我会收到此错误?

x.shape 返回 (28L,) y.shape 也返回 (28L,)

Rus*_*das 6

好吧,我找到了一种让它发挥作用的方法。真的不知道为什么它不能按原来的方式工作,因为我正在输入 tricontourf 一维数组,但基本上我将数据包装在 list() 函数中只是为了双重确保它是一维数组。这使它发挥作用。这是代码:

x = df_2020_pivot['key'].values
y = df_2020_pivot['variable'].values
z = df_2020_pivot['value'].values
plt.tricontourf(list(x), list(y), list(z))

plt.show()
Run Code Online (Sandbox Code Playgroud)

这就是它产生的