実現したいこと
matplotlibで描画したグラフの軸を指数表示したいです
発生している問題・分からないこと
matplotlibで描画したグラフの軸が指数表示されるときは、グラフの左上に指数部分が表示されることがあります(例えば1e-5など)。
これを、軸のすべての数字を、1.0×10^-5、2.0×10^-5、、、のように表示させたいです。
別モジュールplotlyの、exponentformat="power"を使えばできる
https://kenbridge-studyspace.com/plotly-axis-power/
とのことなのですが、これと同様のことをmatplotlib内で行いたいです。
matplotlib内ではどのようにコーディングすればよろしいでしょうか。
わがままなお願いであることは承知の上ですが、ご教授いただけませんでしょうか。
何卒よろしくお願いいたします。
別モジュールplotlyを用いたやり方
import random import plotly.graph_objects as go random.seed(123) X=[random.uniform(10000, 100000) for i in range(20)] Y=[random.uniform(10000, 100000) for i in range(20)] fig = go.Figure() fig.add_trace(go.Scatter(x=X, y=Y, mode='markers', marker=dict(color='red', size=10), )) fig.update_layout(plot_bgcolor="white") fig.update_xaxes(exponentformat="power", linecolor='black', gridcolor='gray',mirror=True) fig.update_yaxes(exponentformat="power", linecolor='black', gridcolor='gray',mirror=True) fig.show()
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
調べて見つけた方法
https://qiita.com/code0327/items/d2f199c5e1267d4822fb
の、
ax.yaxis.set_major_formatter(ticker.FuncFormatter(lambda y,_: f'{y*10:.1f}'+ r'$\times 10^{-1}$'))
を試したのですが、数字の部分のフォント(Times New Roman)と指数部分のLatex表記のフォントが合わせられず、断念しました。
具体的にフォントが合わないというのは、plt.rcParams['font.family'] = 'Times New Roman'としても、以下のY軸のように「0.9」と「×10^-6」のフォントが合わないという事象です。
plt.rcParams['mathtext.fontset'] = 'stixsans'として少し見た目を寄せることも検討しましたが、やはり違和感が拭えません。
そもそもLatex表記を用いずにplotlyのような表記にしたいです。
補足
回答2件
あなたの回答
tips
プレビュー