[英]How can I send data from a python script to Matplotlib?
我是编程新手,对matplotlib有疑问。 我编写了一个python脚本,该脚本从另一个程序的outfile读取数据,然后从一个列中打印出数据。
f = open( '/home/student/AstroSimulation/out.0001.z0.753.AHF_halos','r')
for line in f:
if line != ' ':
line = line.strip() # Strips end of line character
columns = line.split() # Splits into coloumn
mass = columns[8] # Column which contains mass values
print(mass)
我现在需要做的是让matplotlib取用“质量”打印的值,并绘制数量与平均质量的关系。 我已经阅读了matplotlib网站上的文档,但是它们并没有真正解决如何从脚本获取数据的问题(或者我只是没有看到它)。 如果有人能指出我一些说明我如何执行此操作的文档,将不胜感激。 谢谢
您将在脚本中调用matplotlib,因此matplotlib不会像这样“从脚本中获取数据”。 您将其发送到matplotlib。
但是,您需要将质量保存在循环外部,但是,这只是对最基本形式的plot()
和show()
函数的调用:
import matplotlib.pyplot as plt
masses = []
f = open( '/home/student/AstroSimulation/out.0001.z0.753.AHF_halos','r')
f.readline() # Remove header line
for line in f:
if line != ' ':
line = line.strip() # Strips end of line character
columns = line.split() # Splits into coloumn
mass = columns[8] # Column which contains mass values
masses.append(mass)
print(mass)
# If neccessary, process masses in some way
plt.plot(masses)
plt.show()
我正和你在一起,“将总和绘制在平均值上”。 也许您可以链接到想要绘制的图像。
在当前脚本中打印“质量”的位置,您希望将其作为浮点值追加到列表中:
from matplotlib import pyplot
DATAFILE = '/home/student/AstroSimulation/out.0001.z0.753.AHF_halos'
MASS_COL = 8
masses = []
with open(DATAFILE) as f:
f_it = iter(f) #get an iterator for f
next(f_it) #skip the first line
for n, line in enumerate(f_it): #now the for loop uses f_it
row = line.strip().split()
if len(row) > MASS_COL:
mass = row[MASS_COL]
try:
mass = float(mass)
masses.append(mass)
print "%0.3f" % mass
except ValueError:
print "Error (line %d): %s" % (n, mass)
#crunch mass data
plot_data = ...
#make a plot
pyplot.plot(plot_data)
pyplot.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.