簡體   English   中英

為什么下面的 python 代碼輸出空白輪廓 plot?

[英]Why the following python code outputs blank contour plot?

通過使用下面的代碼和數據文件,我得到了空白的 plot。 你能告訴我數據文件或代碼有什么問題嗎?

import numpy as np
import matplotlib.pyplot as plt                                                                                                                                  
data = np.genfromtxt('file1.txt', delimiter=' ')                                                                                                                                                             
lats =  data[:,0]                                                                                                                                                                      
lons =  data[:,1]                                                                                                                                                                     values = data[:,2]                                                                                                                                                                      
lat_uniq, lat_idx = np.unique(lats, return_inverse=True)
lon_uniq, lon_idx = np.unique(lons, return_inverse=True)                                                                                                                           
xre, yre = np.meshgrid(lon_uniq, lat_uniq)
zre = np.full(xre.shape, np.nan)                                                                                                                                            
zre[lat_idx, lon_idx] = values
print(zre)
                                                                                                                                                                                                                                                                                            
fig, (ax1) = plt.subplots(1,1, figsize = (10, 5))
cp1 = ax1.contourf(xre, yre, zre, levels=4)
plt.colorbar(cp1, ax=ax1)
ax1.set_title("data are not interpolated")                                                                                                                                   plt.show()                                                                                                                                                               

test.txt 文件——

1 2 3

4 5 6

7 8 9

10 11 12

在此處輸入圖像描述

您的程序沒有問題 您的矩陣中沒有任何值,在這種情況下將不會繪制圖形。

在矩陣中包含 null 值並嘗試繪制這些點是沒有意義的。

通過改變其值,'contourf' 命令可以擬合 X、Y 和 Z 的值,並繪制圖形。

看到這個:

import numpy as np
import matplotlib.pyplot as plt

data = np.genfromtxt('test.txt', delimiter=' ')
lats = data[:, 0]
lons = data[:, 1]
values = data[:, 2]
lat_uniq, lat_idx = np.unique(lats, return_inverse=True)
lon_uniq, lon_idx = np.unique(lons, return_inverse=True)
xre, yre = np.meshgrid(lon_uniq, lat_uniq)
# zre = np.full(xre.shape, np.nan)
zre = np.full(xre.shape, 0)
zre[lat_idx, lon_idx] = values
print(zre)

fig, (ax1) = plt.subplots(1, 1, figsize=(10, 5))
cp1 = ax1.contourf(xre, yre, zre, levels=4)
plt.colorbar(cp1, ax=ax1)
ax1.set_title("data are not interpolated")

plt.show()

Output:

在此處輸入圖像描述

暫無
暫無

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

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