それはmatplotlib.pyplot
における基本的なプロットであるサイクルライン色することが可能である:カラーサイクリング
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_prop_cycle(plt.cycler('color', ['c', 'm', 'y', 'k']))
x = np.linspace(-1.0, 1.0, 50)
for f in [1.0, 2.0, 3.0, 4.0]:
ax.plot(x, np.sin(x * f))
plt.show()
これはサイクラーリストから次の色を有する各部分正弦波プロットをもたらし、それは意志必要に応じてラップ:私は、単一の輪郭を描くためにcontour
プロットを使用しています
。それぞれの場合について、1つの輪郭線を描画したいが、指定されたパレットを自動的に循環するように色を表示したい(したがって、色分けした凡例を表示できる)。しかしax.set_prop_cycle
は、ここで同じ効果を持っていないようです:
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_prop_cycle(plt.cycler('color', ['c', 'm', 'y', 'k']))
x = np.linspace(-1.0, 1.0, 50)
y = np.linspace(-1.0, 1.0, 50)
z = np.zeros((len(x), len(y)))
# simple function to create useful contours:
def get_z(x, y, f):
for i, u in enumerate(x):
for j, v in enumerate(y):
z[i, j] = (f * u) ** 2 + (f * v) ** 2
return z
# plot for multiple values of `f`
for f in [1.0, 2.0, 3.0, 4.0]:
ax.contour(x, y, get_z(x, y, f), levels=[1], linewidth=2)
plt.show()
各プロット(リング)は、同じ色を持っている - それが自動的に循環していません。私はそれぞれのプロットに異なる色をつけたいと思っています。私はそれぞれの "完全な"等高線プロットが、1つのプロットの一部として描画された各輪郭の色を循環していることを知っていますが、私の場合は固定された "レベル"で単一の輪郭を描いています。
プロットごとに明示的に色を指定しなければ、これを行うのに合理的に簡単な方法はありますか?最終的にはプロットの動的な数をプロットすることを計画しているので、それらをすべて指定するのは実際的ではなく、必要なときに折り返す必要があります。
おそらく、輪郭プロットのカラーマップの開始オフセットを設定または回転する方法がありますか?
ああ、永久ジェネレータ関数の素敵な使用 - ありがとうございました。 – meowsqueak