我从两个不同的数据框中分别加载了一列,并将它们绘制在折线图上。该图形会在屏幕上弹出,但是我的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/

10-12 18:38