我的绘图代码似乎没有显示图形(第12到59行可能不是问题所在,但我包括它们只是以防万一——我有些数据需要花费一段时间放入排序列表中)。
我已经进行了一些尝试和尝试了不同的方法,但我认为主要问题是我不理解figure()
、plt.show()
、import matplotlib.pyplot as plt
、from pylab import *
以及其他一些代码的含义。我不知道什么时候需要使用它们,也不知道为什么需要使用它们。
能否有人帮助我并解释如何绘制两个列表的.svg文件,并在最后显示它,同时详细说明每条线路的包含情况以及何时需要在前面加上plt.
,何时需要在前面加上ax.
,以及何时不需要在前面加上任何东西等?很抱歉这会花费很长时间来回答,但我真的不理解Matplotlib或他们网站上的任何示例。
import matplotlib
matplotlib.use('SVG')
import matplotlib.pyplot as plt
import string, math
from pylab import *
from decimal import *
name = raw_input("Enter the filename:\n")
myfile = open("datafiles/"+name+".data", 'r')
xData = []
yData = []
plots = [name]
mydata = myfile.readlines()
i = 0
N = len(mydata)
while (i < N):
string = mydata[i]
data = [str(x) for x in string.split(" ")]
data=filter(lambda x: len(x)>0, data)
xData.append(data[1])
yData.append(data[2])
i = i + 1
i = 0
while (i < N):
if (float(xData[i]) <= 0):
xData[i] = ""
yData[i] = ""
if (xData[i] == "nan" or xData[i] == "-nan"):
xData[i] = ""
yData[i] = ""
i = i + 1
xData=filter(lambda x: len(x)>0, xData)
yData=filter(lambda x: len(x)>0, yData)
N = len(xData)
i = 0
while (i < N):
xData[i] = float(xData[i])
yData[i] = float(yData[i])
i = i + 1
j = 0
while (j < N):
i = 0
while (i < (N-j-1)):
if (xData[i]>xData[i+1]):
a, b = xData[i], xData[i+1]
xData[i+1], xData[i] = a, b
a, b = yData[i], yData[i+1]
yData[i+1], yData[i] = a, b
i = i + 1
j = j + 1
plot = plt.figure(1)
plt.plot(xData, yData)
plt.show(1)
plt.savefig(name)
matplotlib.use('SVG')
后,它可以显示交互式内容,但是我就不能将其保存为.svg
文件了。有没有办法两者兼得?不过我还没有来得及阅读所有链接,如果答案在那里的话,我会在今晚回家后找到它的。 - Jamie Twells