2
我有這樣的情節:多維數據和情節的傳說
data = {'User 1': [1,2,3], 'User 2': [5, 8, 10], 'User 3': [80, 75, 100], 'User 4': [65, 80, 45]}
characteristics = [('commits', 'r'), ('intended h', 'g'), ('actual h', 'b')]
n_bars = (len(characteristics)+1)*len(data)
fig = plt.figure(figsize=(5,5))
ax = fig.add_axes([0.15, 0.15, 0.65, 0.7])
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.set_yticklabels(data.keys())
ax.set_yticks(np.arange(len(characteristics)/2, n_bars, len(data)))
pers_id = 0
bar_id = 0
for name, data in data.iteritems():
for char_id, characteristic in enumerate(characteristics):
ax.barh(bar_id, data[char_id], facecolor=characteristic[1])
bar_id = bar_id + 1
ax.barh(bar_id, 100, facecolor='white', linewidth=0)
bar_id += 1
pers_id += 1
plt.savefig('perf.png')
plt.show()
唯一的大的功能,我還需要是添加一個傳奇右上角,與characteristics[i][0]
和指示標籤顏色從characteristics[i][0]
。
我將如何得到這個工作?
顯然,相傳是數據的外部繪製矩形...如何實現這一目標? – Flavius
據我所知,matplotlib * always *在「數據繪圖矩形」內繪製圖例。如果它覆蓋了你的一些數據,你可以增加'xlim',所以圖例位於最大值的右邊。 – unutbu
@弗萊維斯:爲什麼這是顯而易見的? @unutbu:我想你可以使用'leg = ax.legend(artists,labels,loc = 2,bbox_to_anchor =(1.05,1.0)); fig.savefig('perf.png',bbox_extra_artists =(leg,),bbox_inches ='tight')'做到這一點。 – DSM