【问题标题】:Uniquely naming png files in def loop在 def 循环中唯一命名 png 文件
【发布时间】:2013-10-15 00:00:11
【问题描述】:

所以现在我可以获得独特的文件,哇!但似乎第二个文件正在绘制第一个和第二个图,第三个正在绘制所有三个,第四个正在绘制所有四个,等等。这是新代码:

for j in range(2):

    dhulist=pyfits.open('test.fits')
    row=5
    colum=j

    ax=[]
    val=[]
    for i in range(1600,3040):
        val.append((dhulist[0].data[i,row,colum]))
        ax.append(((((dhulist[0].header['CRPIX3'] -i)*(dhulist[0].header['CDELT3']))+5000)/1000))

    plt.plot(ax,val)
    #plt.show()
    plt.savefig("5_{0}.png".format(j))

【问题讨论】:

  • 您似乎已经回答了自己的问题,为什么不使用"myfile{0}.png".format(song)?或"myfile{0}_{1}.png".format(*songs)
  • 在 plt.savefig() 里面?
  • format 方法返回一个字符串,因此您可以在savefig 函数中使用它,或者将其分配给变量并将变量传递给函数。 format 可以做相当复杂的事情,但只要看一下例子就应该很容易上手。
  • 请看修改后的代码
  • 如果您发布一个小型的、独立的示例来显示您的问题而不是其他任何内容,那么弄清楚您想要什么会容易得多。

标签: python image matplotlib png function


【解决方案1】:

matplotlibplot 函数更新当前图形,如果没有当前图形,则创建一个新图形。这是一个很好地显式跟踪图形对象从创建到关闭的示例。

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(0, 10)

for j in range(3):
    y = x ** j
    f = plt.figure()
    plt.plot(x, y, figure=f)
    f.savefig("test_{}.png".format(j))
    plt.close(f)

请注意,涉及图形、打开、绘图、保存和关闭的每个操作都明确引用图形对象。恕我直言,这是一种非常好的编码风格,如果您需要一次处理多个数字,这将非常有用。 Matplotlib 还允许您隐式使用“当前图形”,如果您正在做一些简单的事情,这很好。看起来更像这样:

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(0, 10)
for j in range(3):
    y = x ** j
    plt.figure()
    plt.plot(x, y)
    plt.savefig("test2_{}.png".format(j))
    plt.close()

【讨论】:

  • 是的,这就是我需要的!谢谢大家,对混乱的措辞感到抱歉。
猜你喜欢
  • 1970-01-01
  • 2011-03-04
  • 2020-04-11
  • 2011-12-04
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 2022-11-18
  • 2019-01-15
相关资源
最近更新 更多