簡體   English   中英

如何使用Python pcolor解決尺寸問題?

[英]How can I solve my dimension issue with Python pcolor?

我有3個清單,我想作一個pcolor圖。

ccplot = plt.pcolor(a,b,c,vmin = np.min(c),vmax = np.max(c))

a和b的形狀為:(108,)

問題是:

當c的形狀為(216,)時出現錯誤:

“ ValueError:沒有足夠的值可解包(預期2,得到1)”

當我將c重塑為形狀為(10800,2)的2d數組時,出現錯誤:

“ TypeError:C(108,2)的尺寸與X(108)和/或Y(108)不兼容;請參閱help(pcolor)”

請幫助我處理這個pcolor圖。 我預先感謝。

問候特拉維斯

我相信您正在錯誤地看待pcolor實現。 如果您將c作為(216,)的數組,則沒有任何意義,因為它需要i和j值來解包才能在2D網格中找到其位置。 pcolor需要能夠訪問c [i,j],對於像(216,)這樣的一維數組,這是不可能的。

同樣,當您有C(108,2)時,其他數組應看起來像X(109,)Y(3,)。 請嘗試以下示例:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LogNorm

C = np.random.rand(6, 10)
X = range(11)
Y = range(7)

fig, ax0 = plt.subplots(1, 1)

c = ax0.pcolor(X, Y, C)
ax0.set_title('default: no edges')

plt.show()

因此c是一個6x10矩陣,需要x和y的拐角位置。 然后,它們的長度必須為7,長度為11,以提供c矩陣角的所有坐標。 對於角落的一些視覺效果,您可以轉到https://matplotlib.org/api/_as_gen/matplotlib.pyplot.pcolor.html ,其中第一幅圖像向您展示X,Y和C的關系。

希望能幫助到你!

問題在於陣列的尺寸必須兼容。 可以通過將a和b“重塑”為(36,3),然后通過ax.pcolormesh()制作那些網格,從而實現該解決方案。 最后,如果c也重塑為(36,3),即轉換為2D數組,則可以繪制pcolor。 請特別注意網格,以使其根據應用程序有意義。

a = a.reshape(36,3)
b = b.reshape(36,3)
c = c.reshape(36,3)

#making the mesh
a,b = np.meshgrid(a,b)

#pcolormesh
fig, ax0 = plt.subplots(1, 1)
c = ax0.pcolor(a, b, c)
plt.show()

pcolormesh更適合較大的數據集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM