2017-05-09 5 views
0

내 코드는 다음과 같습니다. MatPlotLib을 사용하여 이미지를 만들었지 만 이미지가 png에서 렌더링되지 않습니다. 누군가 제 코드를 수정하여 렌더링합니다.내 이미지가 PNG로 인쇄되지만 아무것도 표시되지 않습니다. plot.show가 실행될 때 이미지가 표시됩니다.

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') 

그래서 다시 테이블로 가져 와서 내 이야기에 추가 할 수있는 png를 얻으려고합니다. 후자는 이미지 렌더링 문제를 제외하고는 쉽습니다. 이 문제를 해결할 수 있다면 알려 주시기 바랍니다.

답변

1

숫자가 plt.show() 이후에 재설정되므로 이미지를 저장하고 표시하는 순서를 변경해야한다고 생각합니다. 따라서 코드에서 plt.show() 명령을 제거하거나 plt.savefig(...)plt.show()을 전환하여이 문제를 해결할 수 있습니다.

+0

굉장한, 내 다음 질문은 이야기에 어떻게 추가할까요? 즉 –

+0

self.append (AverageAnnualMedicalCostPerEE.png) –