我有这个数据框:
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
我正在尝试通过以下代码使用此数据框制作等高线图:
x = df['key'].values
y = df['variable'].values
z = df['value'].values
plt.tricontourf(x, y, z, colors='k')
我一直收到这个错误:
ValueError: x and y must be 1D arrays of the same length
但是每当我检查 x 和 y 的 len、.size、.shape 和 .ndim 时,它们都是相同长度的一维数组。有谁知道为什么我会收到此错误?
x.shape 返回 (28L,) 并且 y.shape 返回 (28L,)
最佳答案
好的,我找到了让它工作的方法。真的不知道为什么它不能以原始方式工作,因为我正在提供 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()
关于python-2.7 - 当它们实际上是相同长度的一维数组时获取 'ValueError: x and y must be 1D arrays of the same length',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53200022/