PyCharm中simConfig无法保存SpikeHist为.png,plt.savefig却可行,求原因
问题描述
尝试将绘制的SpikeHist保存为本地PNG文件时,无报错但未生成目标文件,两种代码表现差异明显:
- 无法生效的代码:
sim.analysis.plotSpikeHist(include=['population1']) simConfig.analysis['plotSpikeHist'] = {'saveFig': 'SpikeHist.png'}
- 可正常生效的代码:
import matplotlib.pyplot as plt sim.analysis.plotSpikeHist(include=['population1']) plt.savefig('SpikeHist.png')
原因分析
配置时机错误
你先调用了plotSpikeHist完成绘图,再修改simConfig.analysis的保存配置。这类仿真分析框架的分析函数在执行时,只会读取调用瞬间的配置参数,后续修改的配置不会对已经完成的绘图操作产生回溯效果——相当于画完图才告诉框架“要保存”,但框架已经走完了绘图流程,不会再响应这个晚到的指令。框架分析函数的参数逻辑限制
部分框架的plotSpikeHist函数,saveFig参数要么需要在调用时直接传入(比如sim.analysis.plotSpikeHist(include=['population1'], saveFig='SpikeHist.png')),要么需要提前在simConfig.analysis中配置好完整的分析项再触发绘图。事后修改配置的方式不符合框架的执行逻辑,因此不会触发保存操作。plt.savefig直接绕开框架逻辑生效plotSpikeHist本质是调用matplotlib完成绘图,绘图结束后,当前matplotlib的活跃画布就是生成的SpikeHist。plt.savefig是直接调用matplotlib的底层API保存当前活跃画布,完全不受框架自身的配置逻辑限制,因此能正常生成文件。
内容的提问来源于stack exchange,提问作者irene bernardi
相关产品推荐
相关产品推荐

