首页 > 解决方案 > 传入标签列表以在 for 循环中生成图形

问题描述

目前正在尝试使用来自 for 循环中的列表的名称来保存每个数字。

输入:

 plot_l=['test1','test2',.........]  

for i in range(ydata.shape[1]):
            plt.figure()
            fig, ax = plt.subplots(constrained_layout=True)
            ax.plot(dsfg,ydata[i])
            ax.set_xlabel('dsfg')
            ax.set_ylabel('tzui')
            ax.set_title('misc ') 
            secax.set_xlabel('len')
            plt.savefig('plot_l{0}.jpg'.format(i))
            plt.close()

输出:生成了图形但图形名称不正确,即

plot_l1.png
plot_l2.png
plot_l3.png

期望的输出:

test1.png
test2.png
test3.png

我也试过plt.savefig(plot_l[i]+'.png')代替plt.savefig('plot_l{0}.jpg'.format(i))建议欢迎....谢谢

标签: pythonmatplotlib

解决方案


您正在迭代由生成的整数range

for i in range(ydata.shape[1]):

您正在使用此参数命名文件i

plt.savefig('plot_l{0}.jpg'.format(i))

假设没有错误并且名称列表包含与i(ie ydata.shape[1] == len(plot_l)) 上的迭代一样多的名称,那么您可以将 替换为savefig

plt.savefig(f'{plot_l[i]}.jpg')

f后跟字符串的符号等效于str.format(),但更明确,因为您可以将要格式化的变量放在{}.


推荐阅读