1. ホーム
  2. python

[解決済み] matplotlibのレイヤーの順番を指定する

2022-02-10 18:34:21

質問

以下のようなスクリプトを実行したとします。

import matplotlib.pyplot as plt

lineWidth = 20
plt.figure()
plt.plot([0,0],[-1,1], lw=lineWidth, c='b')
plt.plot([-1,1],[-1,1], lw=lineWidth, c='r')
plt.plot([-1,1],[1,-1], lw=lineWidth, c='g')
plt.show()

これにより、以下のようになります。

Pythonにレイヤーの上から下への順番を選ばせるのではなく、どのように指定すればよいのですか?

どのように解決するのですか?

なぜなのかわからない zorder この挙動はバグか、少なくとも文書化されていない機能である可能性があります。それは、すでに自動的な参照として zorder を指定した場合、プロット(グリッドや軸など...)を作成する際に zorder を要素にすると、なぜか重なってしまう。これはいずれにせよ仮説です。

この問題を解決するためには、単に zorder を誇張しています。例えば、代わりに 0,1,2 にしてください。 0,5,10 :

import matplotlib.pyplot as plt

lineWidth = 20
plt.figure()
plt.plot([0,0],[-1,1], lw=lineWidth, c='b',zorder=10)
plt.plot([-1,1],[-1,1], lw=lineWidth, c='r',zorder=5)
plt.plot([-1,1],[1,-1], lw=lineWidth, c='g',zorder=0)
plt.show()

となり、その結果、このようになります。

このプロットでは、質問にあるような逆の順序を指定しました。