68

for ループがあり、さまざまな色でポイントをプロットしたいとします。

for i in range(5):
 plt.plot(x,y,col=i)

for ループで自動的に色を変更するにはどうすればよいですか?

4

3 に答える 3

117

@tcaswell は既に回答済みですが、回答を入力している途中だったので、投稿します...

これを行うには、さまざまな方法があります。まず、matplotlibは自動的に色を切り替えます。デフォルトでは、青、緑、赤、シアン、マゼンタ、黄、黒を循環します。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 10)
for i in range(1, 6):
    plt.plot(x, i * x + i, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()

ここに画像の説明を入力

matplotlib が循環する色を制御する場合は、次を使用しますax.set_color_cycle

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 10)
fig, ax = plt.subplots()
ax.set_color_cycle(['red', 'black', 'yellow'])
for i in range(1, 6):
    plt.plot(x, i * x + i, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()

ここに画像の説明を入力

使用する色を明示的に指定したい場合は、それをcolorkwarg に渡すだけです (RGB タプルや 16 進文字列と同様に、html の色の名前が受け入れられます)。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 10)
for i, color in enumerate(['red', 'black', 'blue', 'brown', 'green'], start=1):
    plt.plot(x, i * x + i, color=color, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()

ここに画像の説明を入力

最後に、既存の colormapから指定された数の色を自動的に選択したい場合:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 10)
number = 5
cmap = plt.get_cmap('gnuplot')
colors = [cmap(i) for i in np.linspace(0, 1, number)]

for i, color in enumerate(colors, start=1):
    plt.plot(x, i * x + i, color=color, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()

ここに画像の説明を入力

于 2013-04-15T02:45:38.017 に答える