2017-03-15 3 views
1

Mein Code Anzeige sieht aus wieSeaborn ein BarPlot statt mehrere Plots

ylst = [.1,.2,.3,.4,.5,.6,.7,.8] 
xlst=["A","B","C","D","E","F","G","H"] 
with PdfPages('probs.pdf') as pdf_pages: 
    for i in range(0,len(xlst), 2): 
     ax=sns.barplot(xlst[i:i+2], ylst[i:i+2]) 
     ax.axes.set_title('Which name', fontsize=24,color="b",alpha=0.3) 
     ax.set_ylabel("Probability (%)",size = 17,color="r",alpha=0.5) 

     for p in ax.patches: 
      ax.annotate(str(p.get_height()), (p.get_x() * 1.005, p.get_height() * 1.005)) 
     pdf_pages.savefig() 

bis 4 Plots wollen, in einer Reihe 2 von 2 Säulenmatrix. Das heißt, das obere linke Diagramm sollte A und B mit den Werten .1 und .2 anzeigen. Dann sollte das untere linke oder obere rechte Diagramm C und mit Werten .3 und .4 anzeigen. Und so weiter

Doch was ich stattdessen bekommen ist:

enter image description here

Wie kann ich dieses Problem beheben?

Antwort

1

Ich habe getestet, dass dies funktioniert:

import matplotlib.pyplot as plt, seaborn as sns 
from matplotlib.backends.backend_pdf import PdfPages 

ylst = [.1,.2,.3,.4,.5,.6,.7,.8] 
xlst=["A","B","C","D","E","F","G","H"] 
with PdfPages('probs.pdf') as pdf_pages: 
    fig,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2) 
    list_of_axes = (ax1,ax2,ax3,ax4) 
    for i,j in zip(range(0,len(xlst), 2),list_of_axes): 
     sns.barplot(xlst[i:i+2], ylst[i:i+2],ax=j) 
     j.axes.set_title('Which name', fontsize=24,color="b",alpha=0.3) 
     j.set_ylabel("Probability (%)",size = 17,color="r",alpha=0.5) 

     for p in j.patches: 
      j.annotate(str(p.get_height()), (p.get_x() * 1.005, p.get_height() * 1.005)) 
    pdf_pages.savefig() 
    plt.close() 

Ich habe gerade eine Achse für jede subplot zugeordnet und bewegt .savefig() außerhalb der Schleife.

Verwandte Themen