1

値の対数でスケーリングされた等高線レベルで等高線図を作成しようとしています。ただし、カラー バーには色の横に十分な値が表示されません。簡単な例を次に示します。

import numpy as N
import matplotlib as M
import matplotlib.pyplot as PLT

# Set up a simple function to plot 
values = N.empty((10,10))
for xi in range(10):
    for yi in range(10):
        values[xi,yi] = N.exp(xi*yi/10. - 1)

levels = N.logspace(-1, 4, 10)
log_norm = M.colors.LogNorm() 
# Currently not used - linear scaling
linear_norm = M.colors.Normalize()

# Plot the function using the indices as the x and y axes
PLT.contourf(values, norm=log_norm, levels=levels)
PLT.colorbar()

Contourf 呼び出しで log_norm を linear_norm に切り替えると、カラーバーに値があることがわかります。もちろん、linear_norm を使用すると、色が線形にスケーリングされ、輪郭がこの関数に対して適切に分散されないことを意味します。

Mac OS 10.7で、matplotlibに付属のpython 2.7.2、enthoughtエディションを使用しています。

4

1 に答える 1

5

への呼び出しにフォーマットを追加しますPLT.colorbar

import numpy as N
import matplotlib as M
import matplotlib.pyplot as PLT

# Set up a simple function to plot 
x,y = N.meshgrid(range(10),range(10))
values = N.exp(x*y/10. - 1)

levels = N.logspace(-1, 4, 10)
log_norm = M.colors.LogNorm() 
# Currently not used - linear scaling
linear_norm = M.colors.Normalize()
# Plot the function using the indices as the x and y axes
PLT.contourf(values, norm=log_norm, levels=levels)
PLT.colorbar(format='%.2f')
PLT.show()

ここに画像の説明を入力

于 2011-12-08T21:47:29.340 に答える