2017-05-09 9 views
0

Mein Code ist wie folgt. Ich verwende MatPlotLib, um ein Bild zu erstellen, aber das Bild wird nicht im PNG gerendert. Jemand, bitte repariere meinen Code, damit er rendert.Mein Bild wird nach PNG gedruckt, aber es wird nichts angezeigt. Es wird das Bild angezeigt, wenn plot.show ausgeführt wird.

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 

#Sets the size of the chart 
from pylab import rcParams 
rcParams['figure.figsize'] = 7, 2 

#AverageAnnualMedicalCostPerEE = "{}".format('jpg') 
#print AverageAnnualMedicalCostPerEE 
#Creates the dataframe 
raw_data = {'plan_type': ['Total Annual Cost, Single', 'Total Annual Cost,  
Family'], 
     'Your Plan':  [6000, 3000], 
     'Benchmark':  [4800, 1600], 
     'Region':  [1800, 2800], 
     'Industry':  [4900, 1300], 
     'Size':  [5700, 1600], 
    } 

data = ['Your Plan','Benchmark','Region','Industry','Size'] 

df = pd.DataFrame(raw_data, 
       columns = ['plan_type','Your Plan', 'Benchmark', 'Region',  
'Industry', 'Size']) 

#Plots the bars, adding desired colors 
ax = df.plot.bar(rot=0, color=['#ffc000',"#305496", '#8ea9db', '#b4c6e7',  
'#D9E1F2'], 
      width = 0.8) 

#Adds data labels to top of bars 
for p in ax.patches[0:]: 
    h = p.get_height() 
    x = p.get_x()+p.get_width()/2. 
    if h != 0: 
     ax.annotate('$' + "%g" % p.get_height(), xy=(x,h), xytext=(0,4), 
     rotation=0, 
       textcoords="offset points", ha="center", va="bottom",  
       fontsize='small', color='grey') 

# Remove Bordering Frame 
ax.spines['top'].set_visible(False) 
ax.spines['right'].set_visible(False) 
ax.spines['left'].set_visible(False) 
ax.spines['bottom'].set_color('#B4C7E7') 
ax.get_xaxis().tick_bottom() 
ax.get_yaxis().tick_left() 

# Remove Y-axis Labels 
ax.axes.get_yaxis().set_visible(False) 

#Sets x-axis limits and margins 
ax.set_xlim(-0.5, +1.5) 
ax.margins(y=0) 

# Set Y-Axis Ticks to the Right 
ax.yaxis.tick_right() 

# Set the Y Axis Limits 
ax.set_ylim(0,(df[['Your  
Plan','Benchmark','Region','Industry','Size']].max(axis=1).max(axis=0)*1.5)) 
ax.margins(y=0) 

#Adds legend to the top of the page 
ax.legend(ncol=len(df.columns), loc="Lower Left", bbox_to_anchor=  
(0,1.02,1,0.08), 
     borderaxespad=0, mode="expand",frameon=False, fontsize='small') 

#Add labels to the x-axis 
ax.set_xticklabels(df["plan_type"], fontsize='small') 
ax.xaxis.set_ticks_position('none') 
#shows the plot and prints it to 
plt.show() 
plt.savefig('AverageAnnualMedicalCostPerEE.png') 

Also, noch einmal schaue ich dann später importieren kann ich in eine Tabelle ein png zu erhalten und zu meiner Geschichte hinzufügen. Letzteres ist einfach, außer dem Bildwiedergabe-Problem. Bitte lassen Sie mich wissen, wenn Sie das lösen können, wahrscheinlich eine schnelle Lösung.

Antwort

1

Ich denke, dass Sie die Reihenfolge des Speicherns des Bildes ändern und anzeigen sollten, da die Abbildung nach plt.show() zurückgesetzt wird. Sie sollten dies beheben können, indem Sie entweder den Befehl plt.show() aus Ihrem Code entfernen oder die Optionen plt.savefig(...) und plt.show() wechseln.

+0

Awesome, meine nächste Frage für Sie ist, wie kann ich das zu einer Geschichte hinzufügen? d. h. –

+0

self.append (AverageAnnualMedicalCostPerEE.png) –

Verwandte Themen