51

この形状のnumpy配列があります:(33,10)。等高線をプロットすると、次のような醜い画像が表示されます。 ここに画像の説明を入力

whilecontour()には、平滑化やある種の補間機能についての議論はないようです。

等高線プロットを提供するツールがスムージングも提供するはずだとどういうわけか期待していました。
MPLでそれを行う簡単な方法はありますか?

4

4 に答える 4

63

他の人がすでに指摘しているように、データを補間する必要があります。

これを行うにはいくつかの異なる方法がありますが、初心者の場合は、を検討してscipy.ndimage.zoomください。

簡単な例として:

import numpy as np
import scipy.ndimage
import matplotlib.pyplot as plt

data = np.loadtxt('data.txt')

# Resample your data grid by a factor of 3 using cubic spline interpolation.
data = scipy.ndimage.zoom(data, 3)

plt.contour(data)
plt.show()

ここに画像の説明を入力してください

于 2012-09-07T02:58:22.823 に答える
24

データがまばらな場合、ジョー・キングトンの答えは素晴らしいです。

データにノイズが多い場合は、代わりにフィルタリングを検討する必要があります。

from numpy import loadtxt
from scipy.ndimage.filters import gaussian_filter
from matplotlib.pyplot import contour, show

sigma = 0.7 # this depends on how noisy your data is, play with it!
data = loadtxt('data.txt')
data = gaussian_filter(data, sigma)
contour(data)
show()

ここに画像の説明を入力

于 2015-12-19T11:41:15.557 に答える
9

滑らかな輪郭を取得する簡単な方法はありません。別の方法は、 を試すことimshowです。他の可能性については、こちらを参照してください。

import pylab as plt
import numpy as np

Z=np.loadtxt('data.txt')
plt.subplot(131)
plt.imshow(Z,interpolation='nearest')

plt.subplot(132)
plt.imshow(Z)

plt.subplot(133)
plt.imshow(Z,interpolation='gaussian')

plt.show()

ここに画像の説明を入力

于 2012-09-05T12:31:49.867 に答える
3

gaussian_filterでデータセットを滑らかにしてみてください。詳細については、例を参照してください。

于 2012-09-05T05:13:15.433 に答える