matplotlib 2.0でハッチ(模様)のみを使い、背景色なしで領域を塗りつぶす方法
matplotlibでグラフの領域をハッチ(模様)のみで塗りつぶし、背景色を付けたくない場合があります。そのようなときは、fill_between()メソッドにfacecolor="none"とhatch、edgecolorを組み合わせて指定することで実現できます。
以下に、具体的な手順とサンプルコードを紹介します。
手順
- 図のサイズを設定し、サブプロット間および周囲のパディングを調整します。
- サンプルデータの個数を格納するための変数 n を初期化します。
- 図(figure)とサブプロット(axes)を作成します。
- x と y のデータ点をプロットします。
edgecolor="blue"を指定して、x と y の間の領域を円形("o")のハッチで塗りつぶします。このときfacecolor="none"を指定することで、背景色は塗られずハッチだけが表示されます。- 図を表示するには
show()メソッドを使用します。
サンプルコード
import numpy as np import matplotlib.pyplot as plt # 図のサイズを設定 plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True # サンプルデータの個数 n = 256 # x および y のデータ点 x = np.linspace(-np.pi, np.pi, n, endpoint=True) y = np.sin(2 * x) # 図とサブプロットを作成 fig, ax = plt.subplots() # データ点をプロット ax.plot(x, y, color='blue', alpha=1.0) # データ点間の領域をハッチのみで塗りつぶす ax.fill_between(x, y, color='blue', alpha=.2, facecolor="none", hatch="o", edgecolor="blue", linewidth=1.0) # グラフを表示 plt.show()
実行結果
上記のコードを実行すると、次のような出力が得られます。正弦波の下側の領域が、青色の円形ハッチだけで塗りつぶされていることが確認できます。

ポイント解説
このテクニックの鍵となるのは、fill_between()に渡す引数の組み合わせです。
- facecolor="none":塗りつぶしの背景色を無効にし、ハッチだけを表示させます。
- hatch="o":円形のハッチパターンを指定します。他にも「/」「\」「*」「+」などの記号で異なる模様を表現でき、記号を繰り返すことで模様の密度を上げることも可能です。
- edgecolor="blue":ハッチの色を指定します。
facecolor="none"の場合、この色がハッチの見た目を決めます。
モノクロ印刷や論文用の図など、塗りつぶしではなく模様で領域を区別したい場合に特に有効な手法です。
-
Matplotlibで任意のデータを使って4Dプロットを作成する方法
Matplotlibでは、x・y・z の3つの座標データに加え、c(色) を第4の次元として割り当てることで、いわゆる「4Dプロット」を実現できます。これは実際には3D散布図にカラーマップを組み合わせたものであり、点の位置が3次元情報を、色がもう1つの変数を表現します。以下の手順に従うことで、標準正規分布に従うランダムなデータポイントを使った4Dプロットを簡単に作成できます。手順figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。サブプロット構成の一部として、3D投影(projection=3d)を指定した Axes を追加します。NumPy を使って x
-
PythonのMatplotlibで中空(白抜き)の四角形マーカーを描画する方法
Matplotlibで中空(塗りつぶしなし)の四角形マーカーを描くには、マーカーの種類に ks を指定し、markerfacecolor=none、markersize=15、markeredgecolor=red を設定します。これにより、枠線だけの白抜きスタイルの四角形マーカーが描画されます。 各パラメータの意味 ks:k は黒色(black)、s は四角形(square)を表すマーカースタイルです。 markerfacecolor=none:マーカーの内部を塗りつぶさず、中空にします。 markersize(ms):マーカーのサイズを指定します(ここでは15)。 markeredgec