2017-03-16 20 views
0

私は現在、このように見ている「イベントプロット」を作成しています:)(fill_betweenの異なる色の凡例を追加セグメント

enter image description here

しかし、私は凡例を追加する方法がわかりません各カラーグループごとにこれは、プロットは、現時点で作成される方法です:

handles = dict() 

for i, channel_events in enumerate(channel_event_list): 

    for event in channel_events: 
     start = event[0] 
     end = event[1] 
     y = (i, i + padding) 

     c = 'red' if colors is None else colors[i] 

     h = plt.fill_between([start, end], y[0], y2=y[1], color=c) 

     if c not in handles: 
      handles[c] = list() 
     handles[c].append(h) 

私はハンドルとしてfill_between()の出力を使用することができることを考えたが、私がそこに間違っていたようです。

ここで色についてのみ凡例を取得する最も簡単な方法は何ですか?

+0

「しかし、私が間違っていたようだ」十分な問題の説明ではありません。凡例ハンドルとして 'fill_between'によって返された' PolyCollection'を使うことができないべき理由が私は分かりません。 – ImportanceOfBeingErnest

答えて

0

fill_betweenコール、またはその他のPolyCollectionから凡例ハンドルを作成するには、このPolyCollectionを使用して凡例に指定することができます。

import matplotlib.pyplot as plt 

h = plt.fill_between([1,2,3],[1,3,4], y2=[1,2,3], color="#c1009b") 

plt.legend(handles=[h], labels=["MyLabel"]) 
plt.show() 

enter image description here

簡単な方法は、直接、自動凡例を作成するため(だけで、他のプロットなど)fill_betweenプロットのlabel引数を使用することです。

import matplotlib.pyplot as plt 

plt.fill_between([0,1,2],[4,3,4], y2=[3,2.5,3], color="#c1009b", label="Label1") 
plt.fill_between([0,1,1.3],[1,2,0.5], y2=[0,-1,0], color="#005ec1", label="Label2") 
plt.fill_between([2,3,4],[0.5,1,0], y2=[-1,-1,-1.5], color="#005ec1", label="_noLabel") 

plt.legend() 
plt.show() 

enter image description here

+0

パーフェクト!ありがとうございました :) – displayname

関連する問題