前提・実現したいこと
matplotlibでグラフを作成しています。軸の値を10のN乗の指数表記にするため、matplotlibで軸の値を10のN乗の指数表記にするため、こちら(matplotlibで軸の値を10のN乗の指数表記にしたい)のサイトを参考にコードを書きました。コードはscalarformatterを継承した子クラスFixedOrderFormatterを作り、本来scalarformatterで計算されるorderOfMagnitude(10のN乗のNを制御する変数)を任意の数にするというものらしく、他の海外の方もこの方法を取っているようです。しかし、FixedOrderFormatterの引数をいくつにしても、10のN乗のNを変えることができません。解決策を教えてください。
該当のソースコード
python
1import pandas as pd 2import matplotlib.pyplot as plt 3from matplotlib.ticker import ScalarFormatter 4 5#クラス設定 ※ScalarFormatterを継承 6class FixedOrderFormatter(ScalarFormatter): 7 def __init__(self, order_of_mag=0, useOffset=True, useMathText=True): 8 self._order_of_mag = order_of_mag 9 ScalarFormatter.__init__(self, useOffset=useOffset, 10 useMathText=useMathText) 11 def _set_orderOfMagnitude(self, range): 12 self.orderOfMagnitude = self._order_of_mag 13 14#グラフ描画 15x=[0,100] 16y=[0,2000000] 17 18fig=plt.figure() 19ax=fig.add_subplot() 20 21ax.plot(x,y) 22ax = plt.gca() 23ax.yaxis.set_major_formatter(FixedOrderFormatter(4 ,useMathText=True)) 24 25ax.yaxis.set_major_formatter(ScalarFormatter(useMathText=True)) 26ax.ticklabel_format(style="sci", axis="y",scilimits=(0,4)) 27 28 29plt.show()
補足情報(FW/ツールのバージョンなど)
python 3.9.7
matplotlib 3.5.0
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/01 05:21