|
|
pylab_examples_Examples 44_pcolor_log. |
H.Kamifuji . |
この事例は、Windows10_1909 で Python 3.9.0 環境では、動作しません。( from matplotlib.mlab import bivariate_normal が削除されたのか? ) import matplotlib.pyplot as plt from matplotlib.colors import LogNorm import numpy as np from matplotlib.mlab import bivariate_normal N = 100 X, Y = np.mgrid[-3:3:complex(0, N), -2:2:complex(0, N)] # A low hump with a spike coming out of the top right. # Needs to have z/colour axis on a log scale so we see both hump and spike. # linear scale only shows the spike. Z1 = bivariate_normal(X, Y, 0.1, 0.2, 1.0, 1.0) + 0.1 * bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) plt.subplot(2, 1, 1) plt.pcolor(X, Y, Z1, norm=LogNorm(vmin=Z1.min(), vmax=Z1.max()), cmap='PuBu_r') plt.colorbar() plt.subplot(2, 1, 2) plt.pcolor(X, Y, Z1, cmap='PuBu_r') plt.colorbar() plt.show() |
![]() Python 3.11.2 見直しました。上記のコードでは、下記のエラーが発生します。 Traceback (most recent call last): File "_:\pcolor_log.py", line 4, in <module> from matplotlib.mlab import bivariate_normal ImportError: cannot import name 'bivariate_normal' from 'matplotlib.mlab' (C:\Users\_____\AppData\Local\Programs\Python\Python311\Lib\site-packages\matplotlib\mlab.py) matplotlib 内部のエラーのようです。matplotlib の改修(先祖帰りバグの改修)を待つしかない。 Python 3.11.6 (matplotlib 3.7.1) では、下記のようなエラーがあり、実行できない。 Traceback (most recent call last): File "M:\______\pcolor_log.py", line 4, inPython 3.12.0 (matplotlib 3.8.1) では、下記のようなエラーがあり、実行できない。 matplotlib 3.8.1 の API リファンス(mlab_api) によると、 ファンクションは、存在しないようだ。 Traceback (most recent call last): File "E:\______\pcolor_log.py", line 4, inPython 3.11.6 (matplotlib 3.7.1) 及び Python 3.12.0 (matplotlib 3.8.1) で、見直し中、良く似た画像の新しいサンプル(images-contours-and-fields-colormap-normalizations-py) を見つけ、下記のコードで、正常に実行できました。 """ ======================= Colormap normalizations ======================= Demonstration of using norm to map colormaps onto data in non-linear ways. .. redirect-from:: /gallery/userdemo/colormap_normalizations """ import matplotlib.pyplot as plt import numpy as np import matplotlib.colors as colors # %% # Lognorm: Instead of pcolor log10(Z1) you can have colorbars that have # the exponential labels using a norm. N = 100 X, Y = np.mgrid[-3:3:complex(0, N), -2:2:complex(0, N)] # A low hump with a spike coming out of the top. Needs to have # z/colour axis on a log scale, so we see both hump and spike. # A linear scale only shows the spike. Z1 = np.exp(-X**2 - Y**2) Z2 = np.exp(-(X * 10)**2 - (Y * 10)**2) Z = Z1 + 50 * Z2 fig, ax = plt.subplots(2, 1) pcm = ax[0].pcolor(X, Y, Z, norm=colors.LogNorm(vmin=Z.min(), vmax=Z.max()), cmap='PuBu_r', shading='nearest') fig.colorbar(pcm, ax=ax[0], extend='max') pcm = ax[1].pcolor(X, Y, Z, cmap='PuBu_r', shading='nearest') fig.colorbar(pcm, ax=ax[1], extend='max') plt.show()Python 3.11.6 (matplotlib 3.7.1) 及び Python 3.12.0 (matplotlib 3.8.1) 共に、正常実行です。 ![]() |
pylab_examples_Examples code: pcolor_log.py mlab_api images-contours-and-fields-colormap-normalizations-py |
|