'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つの列をプロットしたグラフです。ここでは、色の違いはファイルの違いで設定しています。
■本プログラム
#!/usr/bin/env python # coding: utf-8 # In[1]: 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) # In[2]: cnt = len(file_list) # プロットするカラーを指定するための処理 color_list = [] for j in range(cnt): color_list.append(cm.cool(j/cnt)) # jet cool autumn color_list # In[3]: # x軸,y軸に設定する列名を指定 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() #plt.savefig(file_name + '.jpg') #plt.close()
下図のような折れ線図だけにしたい場合の雛形コードは次の通りです。
#!/usr/bin/env python # coding: utf-8 # In[1]: 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) # In[2]: cnt = len(file_list) # プロットするカラーを指定するための処理 color_list = [] for j in range(cnt): color_list.append(cm.cool(j/cnt)) # jet cool autumn color_list # In[3]: # x軸,y軸に設定する列名を指定 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]) # 折れ線図 #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() #plt.savefig(file_name + '.jpg') #plt.close()
以上
<広告>
リンク
リンク