簡體   English   中英

從合並的xyz數據繪制2D等高線圖

[英]Plotting a 2D contour plot from binned xyz data

編輯:我在評論中做出了回應,但是我嘗試了帶標記的帖子中的方法-我的z數據不是從我的x和y計算出來的,所以我不能使用這樣的函數。

我的xyz數據如下所示:

新:我生成的文件中的xyz數據-我將它們提取為x,y,z

並拼命試圖得到一個圖,其中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.

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