あなたはplt.plot
の戻り値を使用して作成されLine2Dオブジェクトにアクセスし、直接そのリストに基づいてlegendを設定することができます。
labels = ['a', 'b', 'c']
lines = plt.plot(odata[:, 0], odata[:, 1:], '-')
plt.legend(lines, labels)
ラベルと線の数は必ずしも一致する必要はありません。線が少ない場合、ラベルのいくつかは使用されません。ラベルの数が少ない場合、行の一部がラベルなしになります。 Hereはドキュメントの凡例です。
がシームレスな色の順序を変更するには、ドキュメントからthisの例のようにmatplotlib.rc
を介してグローバルコンフィギュレーションでサイクラーを設定するか、またはあなたのプロットを行うためのオブジェクト指向のAPIを使用する必要があります。その後、グローバル設定を混乱させることなく、個々の軸にset_prop_cycle
を使用することができます。
ここでは、カラーサイクラーを個人的な好みの順に設定する3つの方法があります。私はここでしか色を設定する方法を示していることに注意してください、しかし、あなたも同様に線のスタイルと、おそらく他の属性の順序を制御できます。
import matplotlib as mpl
from matplotlib import cycler
from matplotlib import pyplot as plt
labels = ['a', 'b', 'c']
colors = ['r', 'g', 'b']
mpl.rc('axes', prop_cycle=cycler('color', ['r', 'g', 'b', 'y']))
lines = plt.plot(odata[:, 0], odata[:, 1:], '-')
plt.legend(lines, labels)
:
は、グローバルコンフィギュレーションを設定します。グローバルコンフィギュレーションを設定しますが、あなたのプロットの変更が効果的にローカルにするためにrc_context
コンテキストマネージャを使用して:
import matplotlib as mpl
from matplotlib import cycler,rc_context
from matplotlib import pyplot as plt
labels = ['a', 'b', 'c']
colors = ['r', 'g', 'b']
with rc_context(rc={'axes.prop_cycle': cycler('color', ['r', 'g', 'b', 'y'])}):
lines = plt.plot(odata[:, 0], odata[:, 1:], '-')
plt.legend(lines, labels)
のSe始まり、そして唯一のあなたが実際に変更するAxesに変更を適用するには、オブジェクト指向のAPIを使用してプロットをアップT:
from matplotlib import pyplot as plt
labels = ['a', 'b', 'c']
colors = ['r', 'g', 'b']
fig, ax = plt.subplots()
ax.set_prop_cycle('color', colors)
ax.plot(odata[:, 0], odata[:, 1:], '-')
ax.legend(labels)
私は一般的なルールとして、オブジェクト指向のAPIをお勧めします特にスタンドアロンのスクリプトでは、はるかに高い柔軟性を提供し、またどのオブジェクトが操作されるかを正確に把握するという観点からも明確です。
なぜループを使用したくないですか?ループは非常に基本的で一般的なプログラミングのアイデアです。それが仕事のための正しいツールであるときにそれを避ける理由はありません。 –
あなたはそれがループなしではできないと言っていますか? – Mannix
厳しい意味では、はい。ループなしではできません。ループを自分でPythonコードに書くか、単一行のPythonの範囲構文を使うかによって、ループが起こっています(この場合、Pythonはループバックをしています)。明白なループなしであなたが望むことをするコードを書くことは可能かもしれませんが、実行するとループが起こります。 –