我编写了一个函数,它使用Pandas生成的数据并生成一个热图:
def drawHeatMap(df, city, province, collector, classtype, color, titleposy):
try:
thePlot = pl.matshow(df.values, cmap='PuBuGn')
pl.colorbar(thePlot, orientation='vertical')
aTitle = (classtype + ' Composition Changes Over Time in ' + city +
', ' + province + '\n' + collector + ' collector. ' + 'rs100')
pl.title(aTitle, x=0.5, y=titleposy, style='oblique', weight='bold')
pl.xlabel('Collection Time')
pl.xticks(range(len(df.columns)), df.columns, rotation=90)
pl.yticks(range(len(df.index)), df.index)
fileName = (classtype + '-' + city + '-'
+ province + '-' + collector + '.png')
pl.savefig(fileName)
except ZeroDivisionError:
errorMessage = ('No Data Avaiable for ' + city + ', ' + province +
' with ' + collector + ' collector.')
print errorMessage我遇到的问题是,savefig()会保存带有轴和图形裁剪的图形。我必须使用show(),最大化图形,并手动保存图形界面按钮自己。
我如何修复我的函数,以便savefig()能够正确地保存图形?为了控制我的身材,我试着在pl.savefig()之前放一条这样的行:
pl.figure(figsize=....) 但我最终产生了一些空的图表。如何正确地编写matplotlib函数,使我能够完全控制保存图形?
更新了一个问题图的示例:

发布于 2015-02-03 07:25:44
在文档中,您可以添加一个dpi参数来设置分辨率。
savefig('foo.png', dpi=199)发布于 2014-06-25 04:02:17
我在plt.tight_layout()之前添加了savefig(),它解决了我的修剪问题。也许它也会对你有帮助。
编辑:我还在起始rcParams['figure.figsize'] = 40, 12设置了图形大小(您可以设置自己的宽度和高度)
发布于 2012-10-25 17:05:20
Short:
您只需在调用pl.figure(figsize=...)之前调用pl.colorbar (以及其他所有内容)即可。
解释:
pl.figure创建了一个新的图形(具有给定的大小),所有pl.*方法都将在下面的图形上工作。
因此,pl.savefig只保存最后创建的图形,如果您在前面的行中创建了一个新的图形,则该图形是空的。
https://stackoverflow.com/questions/13073045
复制相似问题