[英]Plotting a 2D contour plot from binned xyz data
編輯:我在評論中做出了回應,但是我嘗試了帶標記的帖子中的方法-我的z數據不是從我的x和y計算出來的,所以我不能使用這樣的函數。
我的xyz數據如下所示:
並拼命試圖得到一個圖,其中x與y相對,y與z為顏色。
y是裝箱后的數據,例如,在不均勻的裝箱中從2.5到0.5。 因此,一組x和z數據的y值都相同。 x數據為溫度,z為密度信息。
因此,我期望圖形看起來像一堆堆疊的矩形,其中一個y值箱的顏色梯度是漸變的,其中x值跨很多。
但是,我嘗試過的所有代碼都不喜歡我的z值,而我能做的最好的事情是:
軸看起來正確,但是色帶從y軸的底部到頂部,而不是在正確的y值下為每個x值繪制一個z值
我可以將其與以下代碼一起使用:
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
import scipy.interpolate
data=pandas.read_csv('Data.csv',delimiter=',', header=0,index_col=False)
x=data.tempbin
y=data.sizefracbin
z=data.den
x=x.values
y=y.values
z=z.values
X,Y=np.meshgrid(x,y)
Z=[]
for i in range(len(x)):
Z.append(z)
Z=np.array(Z)
plt.pcolormesh(X,Y,Z)
plt.colorbar()
plt.show()
我已經嘗試了所有可以在網上找到的內容,例如此處的帖子: x,y,z值的matplotlib 2D圖
但是重塑我的z值有一個問題,或者它只是給我空的圖,並帶有與我的z值有關的所有錯誤(我認為)。
我想念什么嗎? 謝謝您的幫助!
根據以下內容進行編輯:ImportanceOfBeingErnest
我嘗試了這個:
import matplotlib.cm as cm
from matplotlib.colors import LogNorm
import numpy as np
import scipy.interpolate
data=pandas.read_csv('Data.csv',delimiter=',', header=0,index_col=False)
data.sort_values('sizefrac')
x=data.tempbin
y=data.sizefrac
z=data.INP
x=x.values
y=y.values
z=z.values
X=x[1:].reshape(N,N)
Y=y[1:].reshape(N,N)
Z=z[1:].reshape(N,N)
plt.pcolormesh(X,Y,Z)
plt.colorbar()
plt.show()
並得到了一個非常空的情節。 就像給我展示的圖像一樣,向我展示了軸和彩條,但是軸內部是純白色! 沒有錯誤或其他任何內容...重塑我需要從每個對象中刪除一個數據點,因為否則重塑將無法進行
使鏈接的問題適應您的問題,您將獲得:
import numpy as np
import matplotlib.pyplot as plt
x = list(range(10))*10
y = np.repeat(list(range(10)), 10)
# build random z data
z = np.multiply(x, y)
N = int(len(z)**.5)
Z = z.reshape(N, N)
plt.imshow(Z[::-1], extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)), aspect = 'auto')
plt.show()
Silmathoron在對上面的答案的評論中找到了答案-上面的答案無濟於事,但在評論中,他注意到X,Y數據沒有以w方式網格化,這會在繪圖上創建矩形,還提到Z需要比X和Y小一個-從這個我可以修復我的代碼-謝謝大家
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.