color cycleって?
こんな感じで、デフォルトで一つの図に複数プロットすると、色が「青→橙→緑→赤…」というふうに変化していきます。
プロット数が10を超えると一周してまた青に戻ります。
これをcolor cycleと呼びましょう1。
だいたいはskotaroさんの記事1を参考にしています。凄い。
何でこの色なの?
これもskotaroさんの記事に1よると、かつてのtableauのデフォルトカラーだそうです2。
この図を見ればわかるように、かつての色ではかなりvividな色になっていてあまり目に優しくないですね。
ですので、まず新しいtableauの色にしてみましょう。
現在(?)のtableauの色に変更。
from matplotlib import pyplot as plt
from cycler import cycler
plt.rcParams['axes.prop_cycle'] = cycler(color=['#4E79A7', '#F28E2B', '#E15759', '#76B7B2','#59A14E',
'#EDC949','#B07AA2','#FF9DA7','#9C755F','#BAB0AC'])
x_list = [[i for i in range(11)] for _ in range(11)]
y_list = [[i for _ in range(11)] for i in range(11)]
for x,y in zip(x_list,y_list):
plt.plot(x,y,linewidth=10.)
色の抽出はすごく便利なサイト3を使って行いました。
目に優しい色になりましたね!!
10色も使わなくね?
10色も使うことはかなり視認性が悪くなります。
そこで同系統の色を使うような設定も考えてみましょう。
Beautiful Blues4
blue_cycle = cycler(color=['#011f4b','#03396c','#005b96','#6497b1','#b3cde0'])
plt.rcParams['axes.prop_cycle'] = blue_cycle
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- かなりgood!
Number34
number3_cycle = cycler(color=['#2a4d69','#4b86b4','#adcbe3','#e7eff6','#63ace5'])
plt.rcParams['axes.prop_cycle'] = number3_cycle
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- 4色目が薄すぎて見えづらい?
Pastellea4
pastellea_cycle = cycler(color=['#fe9c8f','#feb2a8','#fec8c1','#fad9c1','#f9caa7'])
plt.rcParams['axes.prop_cycle'] = pastellea_cycle
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- 少し差がわかりずらいか
Android Lollipop4
android_lollipop_cycle = cycler(color=['#009688','#35a79c','#54b2a9','#65c3ba','#83d0c9'])
plt.rcParams['axes.prop_cycle'] = android_lollipop_cycle
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- これも差がわかりずらいか?
blue gray4
blue_grey_cycle = cycler(color=['#6e7f80','#536872','#708090','#536878','#36454f'])
plt.rcParams['axes.prop_cycle'] = blue_grey_cycle
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- not badっていう感じですかね。使い所はありそうです。
Gray Blue4
gray_blue_cycle = cycler(color=['#3385c6','#4279a3','#476c8a','#49657b','#7f8e9e'])
plt.rcParams['axes.prop_cycle'] = gray_blue_cycle
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- Beautiful blueほどvividではなく、区別もしやすい
Purple Skyline4
purple_cycle = cycler(color=['#2e003e','#3d2352','#3d1e6d','#8874a3','#e4dcf1'])
plt.rcParams['axes.prop_cycle'] = purple_cycle
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- ややvividだが区別しやすい
Skin Tones4
skin_cycle = cycler(color=['#8d5524','#c68642','#e0ac69','#f1c27d','#ffdbac'])
plt.rcParams['axes.prop_cycle'] = skin_cycle
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- いい感じだが、この色を使うかどうかは完全に好み
Space Gray4
space_gray_cycle = cycler(color=['#343d46','#4f5b66','#65737e','#a7adba','#c0c5ce'])
plt.rcParams['axes.prop_cycle'] = space_gray_cycle
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- 黒系にしたいときはいい感じですね
The Armor Falls4
armor_falls_cycle = cycler(color=['#bfd6f6','#8dbdff','#64a1f4','#4a91f2','#3b7dd8'])
plt.rcParams['axes.prop_cycle'] = armor_falls_cycle
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- これも使い勝手良さそうですね
Blue palette 5
blue_cycle2 = cycler(color=['#005073','#107dac','#189ad3','#1ebbd7','#71c7ec'])
plt.rcParams['axes.prop_cycle'] = blue_cycle2
for x,y in zip(x_list[:5],y_list[:5]):
plt.plot(x,y,linewidth=30.)
- 区別しやすい青を使いたいならこれでも良いかも