Получение 'ValueError: x и y должны быть одномерными массивами одинаковой длины', когда они на самом деле являются одномерными массивами одинаковой длины - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть этот фрейм данных:

    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 и y должны быть одномерными массивами одинаковой длины

Но всякий раз, когда я проверяю len, .size, .shape и .ndim для x и y, они представляют собой одномерные массивы одинаковой длины. Кто-нибудь знает, почему я получу эту ошибку?

x.shape возвращает (28L,) и y.shape возвращает (28L,) также

1 Ответ

0 голосов
/ 08 ноября 2018

Хорошо, я нашел способ заставить это работать. На самом деле не уверен, почему это не сработало оригинально, потому что я загружал 1D-массивы tricontourf, но в основном я обернул свои данные в функцию list () просто для того, чтобы удостовериться, что это 1D-массивы. Это заставило это работать. Вот код:

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()

И это то, что он произвел

...