我从两个不同的数据框中分别加载了一列,并将它们绘制在折线图上。该图形会在屏幕上弹出,但是我的plt.savefig命令不起作用,因为没有文件被保存。
import matplotlib.pyplot as plt
import plotly.plotly as py
import pandas as pd
import plotly.graph_objs as go
# read in LEC
LLEC = pd.read_csv('LLEC_1.csv').transpose()
RLEC = pd.read_csv('RLEC_2.csv').transpose()
#read in DGCA3
LDGCA3=pd.read_csv('LDGCA3_13.csv').transpose()
RDGCA3 = pd.read_csv('RDGCA3_14.csv').transpose()
def plot_betas_left(betaNum):
betaNum = int(betaNum)
#plot betas for both ROIs. start with LEC
ax = LLEC[betaNum].plot()
# add DGCA3
LDGCA3[betaNum].plot(ax=ax)
# label axes
ax.set_xlabel("precise beta number (0 is first)")
ax.set_ylabel("beta coefficient value")
# inset legend
ax.legend(['LEC', 'DGCA3'])
plt.savefig('Subj%s_left_LEC_DGCA3.png' % betaNum+1)
plot_betas(3)
最佳答案
尝试这个:
>>> "%s" % 12+1
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
如您所见,您在
%
运算符和+
运算符之间存在优先级问题:plt.savefig('Subj%s_left_LEC_DGCA3.png' % betaNum+1)
首先将
'Subj%s_left_LEC_DGCA3.png' % betaNum
计算为字符串,然后python尝试在该字符串中添加1
,从而说明了错误(您没有发布任何错误,但它没有保存的事实使错误消失了)我会做:
plt.savefig('Subj%s_left_LEC_DGCA3.png' % (betaNum+1))
甚至更好:
plt.savefig('Subj{}_left_LEC_DGCA3.png'.format(betaNum+1))
也就是说,掌握一个控制台,您可以在其中查看代码引发的异常,这将大有帮助。
关于python - matplotlib savefig不输出文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45968891/