gpt4 book ai didi

python - matplotlib新手的几个疑惑

转载 作者:行者123 更新时间:2023-12-01 06:18:27 25 4
gpt4 key购买 nike

我刚刚开始使用“matplotlib”,并且遇到了 2 个主要障碍,我似乎无法从文档/示例等中解决这些障碍:这是 Python 源代码:

#!/usr/bin/python
import matplotlib
matplotlib.use('Agg')

import matplotlib.pyplot as plt
for i in range(0,301):

print "Plotting",i

# Reading a single column data file
l=plt.plotfile("gen"+str(i))

plt.xlabel('Population')
plt.ylabel('Function Value')
plt.title('Generation'+str(i))
plt.axis([0,500,0,180])

plt.plot()

if len(str(i)) == 1:
plt.savefig("../images/plot00"+str(i)+".png")
if len(str(i)) == 2:
plt.savefig("../images/plot0"+str(i)+".png")
if len(str(i)) == 3:
plt.savefig("../images/plot"+str(i)+".png")

plt.clf()
  1. 疑点1:如你所见,我每次基本上都是清除剧情,然后保存新剧情。我想保持 Y 轴的范围不变,我试图通过“plt.axis([0,500,0,180])”来做到这一点。但似乎不起作用,每次都会自动设置。
  2. 疑点 2::我不想获取点由连续线连接的默认图,而是更愿意获取“*”的图。我该怎么做?

最佳答案

  • 正如 Tim Pietzcker 指出的,您可以通过以下方式缩短末尾的文件名代码使用字符串数字格式。

    filename='plot%03d.png'%i

    %03d 替换为最多填充 3 个零的整数 i。在Python2.6+中,可以使用不太漂亮但更强大的新字符串格式化语法来完成同样的事情:

    filename='plot{0:03d}.png'.format(i)

  • 要获取用星号绘制的点,您可以使用选项marker='*'。要删除连接线,请使用 linestyle='none'
  • plt.plotfile(...) 绘制图形。对 plt.plot() 的调用绘制了覆盖在第一个图形之上的第二个图形。对 plt.plot() 的调用似乎修改了轴尺寸,消除了 plt.axis(...) 的效果。幸运的是,修复方法很简单:只需不调用 plt.plot() 即可。你不需要它。

#!/usr/bin/env python
import matplotlib
import matplotlib.pyplot as plt

matplotlib.use('Agg') # This can also be set in ~/.matplotlib/matplotlibrc
for i in range(0,3):
print 'Plotting',i
# Reading a single column data file
plt.plotfile('gen%s'%i,linestyle='none', marker='*')

plt.xlabel('Population')
plt.ylabel('Function Value')
plt.title('Generation%s'%i)
plt.axis([0,500,0,180])
# This (old-style string formatting) also works, especial for Python versions <2.6:
# filename='plot%03d.png'%i
filename='plot{0:03d}.png'.format(i)
print(filename)
plt.savefig(filename)
# plt.clf() # clear current figure

关于python - matplotlib新手的几个疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1924323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com