定義されたレベルと対数ノルムで等高線図を作成しようとしています。以下に例を示します。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LogNorm
delta = 0.025
x = y = np.arange(0, 3.01, delta)
X, Y = np.meshgrid(x, y)
Z1 = plt.mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = plt.mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = 10 * (Z1* Z2)
fig=plt.figure()
ax1 = fig.add_subplot(111)
lvls = np.logspace(-4,0,20)
CF = ax1.contourf(X,Y,Z,
norm = LogNorm(),
levels = lvls
)
CS = ax1.contour(X,Y,Z,
norm = LogNorm(),
colors = 'k',
levels = lvls
)
cbar = plt.colorbar(CF, ticks=lvls, format='%.4f')
plt.show()
私の質問は次のとおりです
。レベルは次の形式で記述する必要があります:「1x10 ^ -4」、「1.6x10 ^ -4」、...各レベルを手動で指定せずにこれを行うにはどうすればよいですか?
私はWindows7のmatplotlib1.1.1でpython2.7.3を使用しています。
ここから、あなたの質問に合うと思われるアプローチを見つけました。
from matplotlib.ticker import LogFormatter
l_f = LogFormatter(10, labelOnlyBase=False)
cbar = plt.colorbar(CF, ticks=lvls, format=l_f)
これは与えるでしょう:
目盛りの間隔は実際には対数スケールであることに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加