我编写了一个函数,它获取熊猫生成的数据帧并生成一个热图:
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()
,最大化图形并用GUI按钮手动保存图形。
如何修复函数以便savefig()
正确保存图形?我试着在pl.savefig()
之前画一条这样的线来控制我的身材:
pl.figure(figsize=....)
但我最终得到了一些空图。编写matplotlib函数的正确方法是什么?它可以让我完全控制保存图形的操作?
更新为问题图示例:
短:
你只需要在调用
pl.figure(figsize=...)
之前调用pl.colorbar
(以及所有其他东西)说明:
pl.figure
创建一个新的图(具有给定的大小),所有pl.*
方法都将在该图上执行以下操作。所以
pl.savefig
只保存上次创建的图形,如果在前面的行中创建了一个新图形,则该图形为空。我在
savefig()
之前添加了plt.tight_layout()
,它解决了我的修剪问题。也许这对你也有帮助。编辑:我还在开始处设置图形大小
rcParams['figure.figsize'] = 40, 12
(您可以设置自己的宽度和高度)从documentation中,可以添加一个
dpi
参数来设置分辨率。相关问题 更多 >
编程相关推荐