棒グラフの外側に中括弧みたいなものや線を描いて注釈のようなものを表示したいです。
棒グラフのコードはこんな感じです。
python
1import numpy as np 2import matplotlib 3import matplotlib.colors as colors 4import matplotlib.pyplot as plt 5from matplotlib import lines 6 7def main(): 8 x = np.arange(8) 9 10 data = np.array([[3.8, 3.2, 3.5, 3.2, 3.8, 4.0, 4.1, 3.4], 11 [3.1, 3.0, 3.4, 3.8, 3.3, 4.2, 4.0, 3.2], 12 [3.2, 3.5, 3.4, 2.2, 3.1, 4.2, 4.4, 3.4] 13 ]) 14 15 data_std = np.array([[0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], 16 [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], 17 [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]]) 18 19 x_lables = ["XXXXXX", "XXX", "XXXXXXX", "XXXXXX", "XXX\nXXXXXXXXX", "dfsfit", "asgadgsmentd", "sdagiu"] 20 21 fig, ax = plt.subplots(figsize=(21, 10), dpi=210) 22 bar_width = 0.2 23 24 ax.bar(x, data[0], bar_width, color=colors.cnames['hotpink'], label='AAA', capsize=6, yerr=data_std[0]) 25 ax.bar(x + bar_width, data[1], bar_width, color=colors.cnames['deepskyblue'], label='BBB', capsize=6, yerr=data_std[1]) 26 ax.bar(x + 2*bar_width, data[2], bar_width, color=colors.cnames['cornflowerblue'], label='CCC', capsize=6, yerr=data_std[2]) 27 28 ax.set_ylabel('XXXXXXX', weight='bold', fontsize=36) 29 ax.set_ylim([1,5]) 30 ax.set_yticks([1,2,3,4,5]) 31 ax.tick_params(axis="y", labelsize=36) 32 ax.set_xticks(x + bar_width) 33 ax.set_xticklabels(x_lables, weight='bold', fontsize=36, rotation=45) 34 ax.legend(loc="best", fontsize=36, ncol=3) 35 36 plt.grid(True, 'major', 'y', ls='--', lw=.5, c='k', alpha=.3) 37 plt.tick_params(bottom=False) 38 39 plt.savefig('sample.eps', bbox_inches='tight', pad_inches=0.2) 40 plt.show() 41 42if __name__ == '__main__': 43 main()
これに注釈のようなものを下の方にaxisの外側に付け加えたいです。外側にテキストを表示するのはfig.textでできるのは確認したのですが、線などはどうすればよいのかわかりません。
理想画像は他のソフトで加工しているので劣化したりしてしまいます。matplotlib(もしくはほかのpythonライブラリでもいいので)で完結してepsファイルとして出力するのが望ましいです。
スタックオーバーフローで解決策のようなものがあったのですが、
https://stackoverflow.com/questions/5021663/how-to-draw-a-line-outside-of-an-axis-in-matplotlib-in-figure-coordinates
追加のaxisの要素を消したりする必要がありそうなので、あまりやりたくありません。
matplotlibにとって領域外の要件でなければ、スマートな方法がないかとお聞きしたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/09 07:41