for ループがあり、さまざまな色でポイントをプロットしたいとします。
for i in range(5):
plt.plot(x,y,col=i)
for ループで自動的に色を変更するにはどうすればよいですか?
for ループがあり、さまざまな色でポイントをプロットしたいとします。
for i in range(5):
plt.plot(x,y,col=i)
for ループで自動的に色を変更するにはどうすればよいですか?
@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()
使用する色を明示的に指定したい場合は、それをcolor
kwarg に渡すだけです (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()