5

いくつかのデータの等高線図を作成したいのですが、フィールド内のすべての値が同じ値である可能性があります。これにより、matplotlibでエラーが発生します。これは、作成する輪郭が実際にはないため、理にかなっています。たとえば、以下のコードを実行するとエラーが発生しますが、の2番目の定義を削除するziと、期待どおりに実行されます。

均一なフィールドである場合、一部のデータの「等高線」プロットを作成するにはどうすればよいですか?通常の等高線図のように見せたい(ボックスに色を塗りつぶし、側面にカラーバーを表示する。カラーバーは均一な色にすることも、15色の範囲を表示することもできます。気にしない)。

コード:

from numpy        import array
import matplotlib.pyplot as plt

xi = array([0., 0.5, 1.0])
yi = array([0., 0.5, 1.0])
zi = array([[0., 1.0, 2.0],
            [0., 1.0, 2.0],
            [0., 1.0, 2.0]])
zi = array([[1.0, 1.0, 1.0],
            [1.0, 1.0, 1.0],
            [1.0, 1.0, 1.0]])

CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet)
plt.colorbar()
plt.show()
4

1 に答える 1

10

まあ、contourfそれを完璧に処理します、それcontourは窒息です。

なぜこれをしないのですか?

import numpy as np
import matplotlib.pyplot as plt

xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.ones((3,3))

try:
    CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
except ValueError:
    pass
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet)

plt.colorbar()
plt.show()

このように、均一なフィールドがある場合は塗りつぶされた(デフォルトでは緑色の)ボックスが表示され、そうでない場合は線で塗りつぶされた等高線図が表示されます。

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

于 2011-04-06T20:42:36.397 に答える