Matplotlibのバーとウェッジにテクスチャ(ハッチング)を追加する方法
Matplotlibでは、hatchパラメータを指定することで、棒グラフのバーや円グラフのウェッジにテクスチャ(ハッチングパターン)を簡単に追加できます。ハッチングを活用すると、白黒印刷でもデータ系列を区別しやすくなり、グラフに視覚的なアクセントを加えることもできます。
テクスチャを追加する手順
figure()メソッドを使用して、新しい図を作成するか、既存の図をアクティブにします。
サブプロット構成の一部として、図にAxes(軸)を追加します。
ハッチパターンのリストを作成します。バーはこれらのハッチで塗りつぶすことができます。
ハッチの数と同じ数のバーを作成します。
bar()メソッドにhatch引数を渡して、異なるハッチを持つバーを描画します。円グラフの場合はwedgeprops={'hatch': 'パターン'}を指定します。
show()メソッドを使用して、図を表示します。
主なハッチパターンの種類
| 記号 | パターン |
|---|---|
| / 、// 、/// | 斜線(繰り返しで密度が上がる) |
| \ 、\\ | 逆斜線 |
| - 、| | 横線・縦線 |
| + 、x | 十字・斜め十字 |
| o 、O | 小さな丸・大きな丸 |
| . 、* | 点・星形 |
なお、同じ記号を繰り返すほどパターンが細かく(密に)描画されます。
サンプルコード
import numpy as np
from matplotlib import pyplot as plt
# 図のサイズとレイアウトを設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111)
# ハッチパターンのリスト
textures = ["//", "*", "o", "d", "."]
# ハッチごとに異なるテクスチャのバーを描画
for i in range(len(textures)):
ax.bar(i, np.random.randint(1, 5),
color="green", edgecolor="black",
alpha=0.3, hatch=textures[i])
plt.show()
実行結果
このコードを実行すると、緑色の半透明バー5本が黒い枠線とともに描画され、それぞれのバーに「///」「*」「o」「d」「.」という異なるハッチパターンが適用されたグラフが表示されます。edgecolorを指定しないとハッチが見えにくくなるため、必ず枠線の色を設定しておきましょう。
-
PandasとMatplotlibでハッチング付きの棒グラフを描画する方法
Pandasを使ってハッチング(模様)付きの棒グラフを描画するには、Matplotlibのパッチ機能を利用します。以下の手順に従うことで、各バーに異なる模様を設定したグラフを作成できます。手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。Pandasを使用して、2つの列を持つデータフレームを作成します。現在の図にサブプロットとして軸(Axes)を追加します。kind=bar を指定して棒グラフを描画します。使用するハッチングパターンのリストを作成します。bars.patches でバーのパッチオブジェクトを取得します。各パッチを反復処理し、set_hatch()
-
Matplotlibの図に凡例を配置・整列させる方法
Matplotlibで作成した図(フィギュア)に凡例を適切な位置に配置し、要素を整列させる方法を解説します。凡例の位置調整には bbox_to_anchor 引数を使用するのがポイントです。 手順 plot() メソッドを使って line1 と line2 の2本の線をプロットします。 legend() メソッドで図に凡例を配置します。このとき bbox_to_anchor を使って凡例の位置を指定し、ncol 引数で凡例要素を横並びに整列させます。 show() メソッドを呼び出して図を表示します。 コード例 from matplotlib import pyplot as plt pl