2016-06-13 7 views
-2

Ich habe ein Diagramm gezeichnet und die Legende wird direkt über dem Diagramm angezeigt, indem das Diagramm ausgeblendet wird.Anzeige der Legende auf der Seite des Diagramms

Wie kann ich es auf der Seite zeigen.

Hier ist der Code ich

schrieb
############################################################################## 
# Plot ROC curves for the multiclass problem 

# Compute macro-average ROC curve and ROC area 

# First aggregate all false positive rates 
all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)])) 

# Then interpolate all ROC curves at this points 
mean_tpr = np.zeros_like(all_fpr) 
for i in range(n_classes): 
    mean_tpr += interp(all_fpr, fpr[i], tpr[i]) 

# Finally average it and compute AUC 
mean_tpr /= n_classes 

fpr["macro"] = all_fpr 
tpr["macro"] = mean_tpr 
roc_auc["macro"] = auc(fpr["macro"], tpr["macro"]) 

# Plot all ROC curves 
plt.figure() 
plt.plot(fpr["micro"], tpr["micro"], 
label='micro-average ROC curve (area = {0:0.2f})' 
       ''.format(roc_auc["micro"]), 
     linewidth=2) 

plt.plot(fpr["macro"], tpr["macro"], 
label='macro-average ROC curve (area = {0:0.2f})' 
       ''.format(roc_auc["macro"]), 
     linewidth=2) 

for i in range(n_classes): 
    plt.plot(fpr[i], tpr[i], label='AUC class {0} (area = {1:0.2f})' 
            ''.format(i, roc_auc[i])) 

plt.plot([0, 1], [0, 1], 'k--') 
plt.xlim([0.0, 1.0]) 
plt.ylim([0.0, 1.05]) 
plt.xlabel('False Positive Rate') 
plt.ylabel('True Positive Rate') 
plt.title('Multi-Class ROC Curve of '+name) 
plt.legend(loc="lower right") 

Und hier ist das Bild, das ich bekam.

enter image description here

+2

Schauen Sie sich diese Beispiele: http: // matplotlib.org/users/legend_guide.html – Serenity

Antwort

1

Der einzige Weg, ich weiß, die Legende aus einem graphe zu setzen, ist auf der Grafik dezoom:

import matplotlib.pyplot as plt 
import numpy as np 

x = np.arange(10) 

fig = plt.figure() 
ax = plt.subplot(111) 

for i in xrange(5): 
    ax.plot(x, i * x, label='$y = %ix$'%i) 

# Shrink current axis by 20% 
box = ax.get_position() 
ax.set_position([box.x0, box.y0, box.width * 0.8, box.height]) 

# Put a legend to the right of the current axis 
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5)) 

plt.show() 

enter image description here

Verwandte Themen