2

それぞれの適合度を測定して得られたデータをプロットしたいと思います。各図に6つの測定値をプロットしますが、各測定値データのプロットはそのフィットと同じ色にする必要があります。ある測定データプロットから次のプロットへ、matplotlibのdefalutカラーサイクルが必要です。

まず、次のようにロードされた場合のデータ:

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
data1 = np.genfromtxt('data1.txt')
fit1 = np.genfromtxt('fit1.txt')
...

次に、問題は、もちろん、次のようにrcParamsのカラーシーケンスを再定義できます。

ColourSeq = []
ColourSeqOriginal = mpl.rcParams['axes.color_cycle']
for ind in range(len(ColourSeqOriginal)):
    ColourSeq.append(ColourSeqOriginal[ind])
    ColourSeq.append(ColourSeqOriginal[ind])
mpl.rcParams['axes.color_cycle'] = ColourSeq

しかし、これは複雑に思えます。

最も単純なことは次のようです:

plt.figure()
plt.plot(xdata, data1, xdata, fit1, '???')
plt.plot(xdata, data2, xdata, fit2, '???')
plt.plot(xdata, data3, xdata, fit3, '???')

'???' plt.plotが指定されたデータのカラー値をインクリメントするのを妨げるものが存在するかどうかはわかりませんが、コマンドオプションです。しかし、あるplt.plot()呼び出しから次の呼び出しまで、通常の色の増分が必要です。

4

2 に答える 2

6

軸ごとにカラーサイクルを設定できます

ax = plt.gca()
ax.set_color_cyle(['r','r','b','b',..])

これを行うためのよりクリーンな方法は次のとおりです。

import itertools
colors_ = ['r','b','g','m','k'] # change to what colors you want

datas = [data1, data2, data3]
fits = [fit1, fit2, fit3]
ax = plt.gca()
for d, f, c in zip(datas, fits, itertools.cycle(colors_)):
    ax.plot(xdata, d, color=c)
    ax.plot(xdata, f, color=c) 

これにより、使用する色を正確に制御できます。データのプロット方法と適合方法を変更する場合は、N回ではなく、1回だけ変更する必要があります。線のプロット方法を制御するために、追加のリスト(ラベル、マーカータイプ、線のスタイルなどのリストなど)を簡単に追加することもできます。(itertools.cycleは、色がで反復可能な制限になることのないようにするためにありますzip)。

オートサイクリングはプロトタイピングには適していますが、実際のプロットの色を指定する習慣を身に付ける必要があります。

于 2013-01-22T05:22:19.327 に答える
2

plot()plot()の1回の呼び出しで、すべての行に同じ色を強制する引数は1つもありません。カラーサイクルが増加しないようにする唯一の方法は、を使用して色を指定することcolor='x'です。

これがあなたのために働くかもしれない別のアプローチです:

ax = plt.gca()
ax.plot(xdata, data1)
ax.plot(xdata, fit1, color=ax.lines[-1].get_color())
ax.plot(xdata, data2)
ax.plot(xdata, fit2, color=ax.lines[-1].get_color())
ax.plot(xdata, data3)
ax.plot(xdata, fit3, color=ax.lines[-1].get_color())

フィットラインのを指定することによりcolor、カラーサイクルは「フィット」データで増分されません。

于 2013-01-21T17:45:16.200 に答える