简体   繁体   English

我的图像将打印为PNG,但没有任何显示,运行plot.show时它确实显示了图像

[英]My image will print to PNG but nothing is showing, it does show the image when plot.show is run

My code is as follows. 我的代码如下。 I am using MatPlotLib to create an image, but the image is not rendering in the png. 我正在使用MatPlotLib创建图像,但是该图像未在png中呈现。 Someone, please fix my code so it will render. 有人,请修复我的代码,使其能够呈现。

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

So, again I am looking to get a png I can then later import into a table and add to my story. 因此,我再次希望获得一个png,然后可以将其导入表中并添加到我的故事中。 The latter is easy, except the image rendering issue. 后者很容易,除了图像渲染问题。 Please let me know if you can solve this, probably a quick fix. 请让我知道您是否可以解决此问题,可能是快速解决方案。

I think you should change the order of saving the image and showing it, since the figure will be reset after the plt.show() . 我认为您应该更改保存图像并显示它的顺序,因为该数字将在plt.show()之后重置。 So you should be able to fix this by either removing the plt.show() command from your code or switch plt.savefig(...) and plt.show() . 因此,您应该能够通过从代码中删除plt.show()命令或切换plt.savefig(...)plt.show()来解决此问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM