0

すべて同じ数の要素を持つ 3 つのリストがあります。

time_list ###(float - converted from date object with matplotlib.dates.date2num) 

temperature_list ###(float)

heating_list ###(boolean)

Matplotlib を使用して、温度を時間の関数としてプロットしたいと考えています。また、その時点で加熱が発生しているかどうかに応じて、ブール値 True/False で構成されるリスト Heating_list もあります。たとえば、曲線が加熱されている場合は赤になり、加熱されていない場合は青になります。

私はこの例を見つけました: http://wiki.scipy.org/Cookbook/Matplotlib/MulticoloredLine

ただし、いくつかの温度値の代わりに、加熱リストを使用して色を決定したいと思います。また、例のようにnumpy配列ではなく、すでに持っているリストを使用したいと思います.

編集:

私は何を試しましたか。

colors = ListedColormap(["b", "k"])
norm = BoundaryNorm([not heating, heating], colors.N) ### I don't really know how to define this condition
lc = LineCollection(tuple(zip(time_list, temperature_list)), label = "T1", cmap=colors, norm=norm)
###I tried to make my lists the same form as this "linen = (x0, y0), (x1, y1), ... (xm, ym)"
###According to LineCollection found here: http://matplotlib.org/api/collections_api.html

plt.gca().add_collection(lc)
plt.show()

私も試しました:

   time_plot = plt.plot(time_list, temperature_list, label = "T1")
   time_plot.gca().add_collection(lc)

リストの形式が間違っているという問題がいくつかありました。そのため、zip/tuple をすべて実行しようとしました。それから、いつどの色を使うかを定義する方法がわからないので、とにかくうまくいかないことに気付きました。クックブックの例では値の範囲を単純に定義しましたが、温度の値に依存するのではなく、外部プロパティに依存するようにしたいと考えています。

4

1 に答える 1

0

私は最終的に、各プロットが常に 1 つの色になるように、いくつかのプロットをプロットすることでこれを行いました。ただし、これではプロット間に小さなギャップが残り、1 つのプロットとして簡単に扱うことができません。

散布図は引数としてカラーマップを持つことができるため、ドットを接続する必要がない場合は、散布図を使用してこの種のことを行う方がはるかに簡単であることがわかりました。

于 2013-07-11T07:49:21.347 に答える