2017-04-01 5 views
2

カラムが同じであるが異なる実験を表す2つのパンダデータフレームをプロットするとき、同じカラーサイクルを使用したい。例えば、連続したプロットコマンドで自動カラーサイクリングをオフにする

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 

f1 = lambda x: (x/1)**2 
f2 = lambda x: (x/2)**2 
f3 = lambda x: (x/3)**2 

x = np.linspace(0, 1, 100) 

exp1 = pd.DataFrame({'f1': f1(x), 
        'f2': f2(x), 
        'f3': f3(x)}) 
exp2 = exp1 * 1.5 

fig, ax = plt.subplots() 

exp1.plot(ax=ax) 
exp2.plot(ax=ax, style='--', legend=False) 

ように見える図形を与える:

enter image description here

色サイクルが最初のものの後に中断したところから第2のプロットコマンドが継続されます。 pandas DataFramesの連続するプロットコマンド間のカラーサイクルを「リセット」する最良の方法は何ですか?

+0

この質問は、この1の重複ことがありますhttp://stackoverflow.com/questions/24193174/reset-color-cycle-in-matplotlib/24195745 – gereleth

+0

大丈夫ああありがとう! – pbreach

+1

[Matplotlibでカラーサイクルをリセット]の可能な複製(http://stackoverflow.com/questions/24193174/reset-color-cycle-in-matplotlib) – gereleth

答えて

1

上記の回答と同様に、独自のカスタムカラーを選択してから、両方のプロットにそのセットを使用することもできます。

from itertools import cycle, islice 

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 

f1 = lambda x: (x/1) ** 2 
f2 = lambda x: (x/2) ** 2 
f3 = lambda x: (x/3) ** 2 

x = np.linspace(0, 1, 100) 

exp1 = pd.DataFrame({'f1': f1(x), 
        'f2': f2(x), 
        'f3': f3(x)}) 
exp2 = exp1 * 1.5 

custom_colours = list(islice(cycle(["b", "g", "r", "c", "m", 'k']), None, len(exp1))) 

fig, ax = plt.subplots() 

exp1.plot(ax=ax, color=custom_colours) 
exp2.plot(ax=ax, style='--', legend=False, color=custom_colours) 
関連する問題