'21/12/05更新:折れ線図だけの場合の雛形コードも追記しました。
本記事では、凡例(legend)の順番に従って段階的に変化した色を適応したい場合の雛形コードを載せました。
下図の例では、凡例が0, 1, 2の3つあります。これらが水色から紫へと段階的に変化した色を設定しています。方法は、import matplotlib.cm as cmを使用して、cm.coolやcm.jet、cm.autumnなどを活用します。

上図は、下図データのような3つのcsvファイルの各々のx,y1, y2の3つの列をプロットしたグラフです。ここでは、色の違いはファイルの違いで設定しています。

■本プログラム
import glob
import re
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import japanize_matplotlib
plt.rcParams["font.size"] = 18
file_list = glob.glob('./*csv')
file_list = sorted(file_list, key=lambda x:int((re.search(r"[0-9]+", x)).group(0)))
print(file_list)
cnt = len(file_list)
color_list = []
for j in range(cnt):
color_list.append(cm.cool(j/cnt))
color_list
x_name_list = ['x', 'x']
y_name_list = ['y1', 'y2']
fig = plt.figure(dpi=80, figsize=(8,6))
legend_list = []
handle_list = []
for i, file in enumerate(file_list):
legend_list.append(i)
DF = pd.read_csv(file, encoding='cp932')
for k, (x_name, y_name) in enumerate(zip(x_name_list, y_name_list)):
plt.plot(DF[x_name], DF[y_name], c=color_list[i])
p = plt.scatter(DF[x_name], DF[y_name], color=color_list[i])
if k == 0:
handle_list.append(p)
plt.yscale('linear')
plt.ylim(-100, 10000)
plt.title("graph")
plt.xlabel('x')
plt.ylabel('y')
plt.grid(which="both")
plt.legend(handles = handle_list,
labels = legend_list,
bbox_to_anchor=(1.00, 0.9),
title = 'mylegend')
plt.tight_layout()
plt.show()
下図のような折れ線図だけにしたい場合の雛形コードは次の通りです。

import glob
import re
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import japanize_matplotlib
plt.rcParams["font.size"] = 18
file_list = glob.glob('./*csv')
file_list = sorted(file_list, key=lambda x:int((re.search(r"[0-9]+", x)).group(0)))
print(file_list)
cnt = len(file_list)
color_list = []
for j in range(cnt):
color_list.append(cm.cool(j/cnt))
color_list
x_name_list = ['x', 'x']
y_name_list = ['y1', 'y2']
fig = plt.figure(dpi=80, figsize=(8,6))
legend_list = []
handle_list = []
for i, file in enumerate(file_list):
legend_list.append(i)
DF = pd.read_csv(file, encoding='cp932')
for k, (x_name, y_name) in enumerate(zip(x_name_list, y_name_list)):
p, = plt.plot(DF[x_name], DF[y_name], c=color_list[i])
if k == 0:
handle_list.append(p)
plt.yscale('linear')
plt.ylim(-100, 10000)
plt.title("graph")
plt.xlabel('x')
plt.ylabel('y')
plt.grid(which="both")
plt.legend(handles = handle_list,
labels = legend_list,
bbox_to_anchor=(1.00, 0.9),
title = 'mylegend')
plt.tight_layout()
plt.show()
以上
<広告>
リンク
リンク