8

我需要使用 Python 中的“savefig”来保存 while 循环的每次迭代的图,并且我希望我给该图的名称包含文字部分和数字部分。这个来自数组或者是与迭代索引相关的数字。我举一个简单的例子:

# index.py

from numpy import *
from pylab import *
from matplotlib import *
from matplotlib.pyplot import *
import os

x=arange(0.12,60,0.12).reshape(100,5)
y=sin(x)

i=0

while i<99
  figure()
  a=x[:,i]
  b=y[:,i]
  c=a[0]
  plot(x,y,label='%s%d'%('x=',c))

  savefig(#???#)      #I want the name is: x='a[0]'.png
                      #where 'a[0]' is the value of a[0]

多谢。

4

3 回答 3

5

嗯,应该是这样的:

savefig(str(a[0]))

这是一个玩具示例。为我工作。

import pylab as pl
import numpy as np

# some data
x = np.arange(10)

pl.figure()
pl.plot(x)
pl.savefig('x=' + str(10) + '.png')
于 2012-12-03T12:11:23.367 回答
3

我最近有同样的需求并想出了解决方案。我修改了给定的代码并更正了几个显式错误。

from pylab import *
import matplotlib.pyplot as plt

x = arange(0.12, 60, 0.12).reshape(100, 5)
y = sin(x)
i = 0

while i < 99:
    figure()
    a = x[i, :]                   # change each row instead of column
    b = y[i, :]                   

    i += 1                        # make sure to exit the while loop

    flag = 'x=%s' % str(a[0])     # use the first element of list a as the name
    plot(a, b, label=flag)
    plt.savefig("%s.png" % flag)

希望能帮助到你。

于 2016-02-18T02:34:50.193 回答
2

由于python 3.6您可以使用f-strings动态格式化字符串:

import matplotlib.pyplot as plt

for i in range(99):
    plt.figure()
    a = x[:, i]
    b = y[:, i]
    c = a[0]
    plt.plot(a, b, label=f'x={c}')

    plt.savefig(f'x={c}.png')
于 2020-03-11T22:57:59.493 回答