我使用食譜例子frin http://wiki.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data來製作輪廓圖。然而,我的一些數據可能只包含零,在這種情況下,我得到一個ValueError:零大小的數組來減少操作的最小值,它沒有身份。當輪廓不存在時,Matplotlib輪廓圖失敗
import numpy as np
from scipy.interpolate import griddata
import matplotlib.pyplot as plt
from numpy.random import uniform, seed
# make up some randomly distributed data
seed(1234)
npts = 200
x = uniform(-2,2,npts)
y = uniform(-2,2,npts)
z = 0*x*np.exp(-x**2-y**2) #Here i multiply by zero
# define grid.
xi = np.linspace(-2.1,2.1,100)
yi = np.linspace(-2.1,2.1,100)
# grid the data.
zi = griddata((x, y), z, (xi[None,:], yi[:,None]), method='cubic')
#zi[0][0]=0.00001 would make everything ok again
print(zi)
# do the plotting and save the result
CS = plt.contour(xi, yi, zi)
plt.show()
有沒有一種優雅的方式來處理這個問題? 這是值得在matplotlib票?
如何將你喜歡的代碼的行爲?你提供的數據不好,你會得到一個例外。聽起來對我很好。 – Christoph
嗯,我不會說我提供「壞」數據。 z = 0 * x * np.exp(-x ** 2-y ** 2)+ 0.0000001,工作幷包含儘可能多的信息。 – Underdetermined
然而,在使用griddata執行上述代碼的插值之後,您將得到一組NaN而不是一組0或其他數字,這些數字是「不好的」,因爲很難決定如何使用這些數字等高線圖。拋出異常似乎是一個合理的迴應。 – Tommy