2012-06-21 17 views
9

Planuję tablicę wykresów kołowych, z których każdy używa tych samych dwóch kolorów dla tych samych dwóch typów danych.matplotlib - Legenda w oddzielnym podplocie

plt.figure(num=None, figsize=(6, 8)) 
for i in range(len(data_1)): 
    plt.subplot(sp_rows, sp_cols, i+1) 
    fracs = [data_1[i], data_2[i]] 
    plt.pie(fracs, autopct='%1.1f%%') 

pp.savefig() 

Oczywiście nie ma sensu wykreślić legendy dla każdego z tych wykresów, ponieważ wszystkie są takie same. Czy istnieje jakikolwiek sposób, w jaki mogę stworzyć pojedynczą legendę w osobnej postaci na końcu?

+0

to wygląda tak, jak jest duplikat następującego posta: http://stackoverflow.com/questions/4700614/how-to-put-theleged-out-of-the-plot – stanri

+0

Nie sądzę, że drugi plakat wyraźnie mówi, że nie mówi o wątkach pobocznych. – Nils

+0

Yup, właśnie to zauważyłem. – stanri

Odpowiedz

16

można nazwać legendą() tylko raz:

import numpy as np 
import pylab as pl 

for i in xrange(1, 5): 
    pl.subplot(220+i) 
    pl.pie([i,2], labels=["a","b"], autopct='%1.1f%%') 

l = pl.legend(title="sample") 
pl.show() 

enter image description here

lub jeśli chcesz legendę w nowej osi, po prostu stworzyć atrapę ciasto i tworzyć legendę dla niego, a następnie ukryć atrapę ciasto:

import numpy as np 
import pylab as pl 

for i in xrange(1, 5): 
    pl.subplot(220+i) 
    pl.pie([i,2], labels=["a","b"], autopct='%1.1f%%') 

fig = pl.gcf() 
axe = fig.add_axes([0.4,0.4,0.2,0.2]) 

pie = pl.pie([1,1], labels=["a","b"]) 
l = pl.legend(title="sample", loc="center") 
for group in pie: 
    for x in group: 
     x.set_visible(False) 

pl.show() 

enter image description here

Powiązane problemy