やりたいこと
論文など、白黒印刷が想定される紙媒体や、色の見え方の個人差に考慮したメディアでの棒グラフの作り方として、ハッチパターンを使ったものがよく使われています。
今回は、matplotlib
でハッチパターンの棒グラフを描画してみます。
解決方法
plt.bar()
の引数 hatch
に文字列を渡すことでハッチパターンを使うことができます。
基本的に、patterns = [ "/" , "\\" , "|" , "-" , "+" , "x", "o", "O", ".", "*" ]
の10種類あります。
また、"/////"
とすることで、ハッチの細かさを変更できます。Pythonでは、例えば "///"
を "/"*3
と書くことができるため、下記のコードではそれを利用しています。
なお、下の例では背景色を指定していませんが、plt.bar()
の引数 color
で背景色を指定することでハッチパターンと合わせて塗りつぶすことが可能です。
import numpy as np import matplotlib.pyplot as plt from adjustText import adjust_text np.random.seed(47) patterns = [ "/" , "\\" , "|" , "-" , "+" , "x", "o", "O", ".", "*" ] # プロットに使ったコード plt.clf() count = 0 for i in range(0, 3): for j in range(0, 3): count += 1 plt.subplot(3, 3, count) for k in range(0, len(patterns)): value = np.random.randint(5)+5 plt.bar(k, value, color="white", edgecolor='black', hatch=patterns[k]*count) plt.title(f"patterns[k] * {count}") plt.tight_layout() plt.show()