TLでSymLogNormの正規化とticklabels; DR
をあなたは...はmatplotlibの
が
LogFormatter
は、すべてのラベルのための科学的表記法を使用するように強制できますか?現在は、0
より小さい値、または1000
より大きい値に使用します。私は見つけることができるどんなset_powerlimit
方法も公開していないようです。それを正しくする方法はありますか、別のフォーマッターを使うべきですか?どれ?-1e+02
の代わりに、指数付きの最初のプロットのような上付き文字で科学記法を取得しますか?そこにきれいにフォーマットxticksを取得するための簡単な方法であったとすれば、当然のことながら
... plt.xscale('symlog')
コールも右のx軸のためにそれを取得するので、スケール自体の限界のようには見えません。 symlogスケーリングを使用したカラーマップのラベルも素晴らしいでしょう。しかし、正直なところ、documentation自体の展示が、私はあまり希望を持っていないことをカラーバーで...見ている: - 最初から起動/
を...
matplotlibのは、いくつかの規格化を提供していますcolorbar
と一緒に使用できます。これはdocumentationでうまく説明されています。中でも
、対数一方(mpl.colors.LogNorm
)はxticksが均等に分散それ
- 場所として、特別に良好に機能します。
- は、と見た目がよく見える科学記法**を使用してティックラベルをフォーマットします。
単独で。最小例:一方
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors, ticker
data = np.arange(4).reshape(-1,1)+np.arange(4).reshape(1,-1)
data = 10**(data/2.)
plt.figure(figsize=(4,3))
plt.imshow(data, interpolation="None", cmap="gray", norm=colors.LogNorm())
plt.colorbar()
plt.show()
、対称対数一方(matplotlib.colors.SymLogNorm
)はどちらも行いません。 This SO answerは、imshow用のラッパー関数を定義していますが、これは望みの結果に向かって進んでいますが、まだそれほど得られていません。
その関数の適応と最小限の例:
def imshow_symlog(arr, vmin=None, vmax=None, logthresh=5, logstep=1,
linscale=1, **kwargs):
# Adapted from https://stackoverflow.com/a/23118662
vmin = arr.min() if vmin is None else vmin
vmax = arr.max() if vmax is None else vmax
img=plt.imshow(arr,
vmin=float(vmin), vmax=float(vmax),
norm=colors.SymLogNorm(10**-logthresh, linscale=linscale),
**kwargs)
maxlog=int(np.ceil(np.log10(vmax)))
minlog=int(np.ceil(np.log10(-vmin)))
#generate logarithmic ticks
tick_locations=([-(10**x) for x in xrange(-logthresh, minlog+1, logstep)][::-1]
+[0.0]
+[(10**x) for x in xrange(-logthresh,maxlog+1, logstep)])
cb=plt.colorbar(ticks=tick_locations, format=ticker.LogFormatter())
return img,cb
data2 = data - data[::-1,::-1]
plt.figure(figsize=(4,3))
img, cb = imshow_symlog(data2, interpolation="None", cmap="gray", logthresh=0)
plt.show()
素晴らしい!時々、matplotlibのドキュメントは少し乏しいです...だから、今のところimshow_symlogラッパー関数を取り除く方法はないのです...誰かがもっとプラグをつくかどうかを少し見てみましょう - と - 再生* ishの解決策、それ以外の場合は私の質問に答えます。 – mgab