簡體   English   中英

循環遍歷 colors 定義一個顏色 map matplotlib

[英]Cycling through colors and defining a color map matplotlib

我正在遍歷文件路徑列表,我希望每個子列表都有一個單獨的數字。 在每個子列表中,我將文件打開為 dataframe、plot y1 和 y2(我想要相同的顏色),然后移動到該列表中的下一個文件/數據幀,我希望這兩行的顏色與第一行不同.

我的問題是如何定義要使用的顏色圖? 無論我選擇使用什么 cmap,以下內容似乎對我的地塊 output 沒有任何影響:

for x in configurations:                          # configurations is a list of list of directories
    plt.rcParams['image.cmap'] = 'Accent'         # Not working
    prop_cycle = plt.rcParams['axes.prop_cycle']
    colors = prop_cycle.by_key()['color']
    for i, y in enumerate(x):        
        df = pd.read_fwf(y, header=None, comment='#', skiprows=53, skip_empty_rows=True)           
        df['epoch'] = pd.to_datetime(df['epoch'])
        line1 = plt.plot(df['epoch'],df['y1'], color=colors[i])
        line2 = plt.plot(df['epoch'],df['y2'], color=colors[i])
    plt.show()

plt.rcParams['axes.prop_cycle']cycler器 object 進行評估,它本身並不是特別有用,但您可以調用cycler器來獲取itertools.cycle object 可以傳遞給next以獲得您擁有的字典在繪圖命令的 arguments 列表中解壓( **運算符)

import matplotlib.pyplot as plt 
import numpy as np                                                                                     

configurations = [ ['f0', 'f1', 'f2'], ['g0', 'g1']]                                                   

def get_df(fname):
# I have no Pandas, this fakes a data set
    global n 
    n += 0.2 
    return dict(x=[0,1,2,3,4,5], 
                y1=[0,2+n,3+n,3+n,2+n,0], 
                y2=[3+n,2+n,0,-2-n,-3-n, -3-n])                                                        

n = 0 
for conf in configurations: 
    prop_cycle = plt.rcParams['axes.prop_cycle']() 
    fig = plt.figure(constrained_layout=True) 
    ax = fig.add_subplot() 
    for fname in conf: 
        curr_dict = next(prop_cycle) 
        df = get_df(fname) 
        ax.plot('x', 'y1', '', data=df, label='y1 from '+fname, **curr_dict) 
        ax.plot('x', 'y2', '', data=df, label='y2 from '+fname, **curr_dict, linestyle='--') 
    ax.legend() 
    fig.savefig(fname[0]+'.png')                                                                       

每次輸入新圖形時,上面都會重置循環,我希望這是合理的……否則將語句prop_cycle = plt.rcParams['axes.prop_cycle']()放在循環之外。

在此處輸入圖像描述 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM