Jam*_*lls 5 python graph matplotlib
我的绘图代码似乎没有显示图形(第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)
Run Code Online (Sandbox Code Playgroud)
您正在尝试使用不会生成图形的后端plt.show().相反,您需要使用另一个后端,如WXAgg或QT4agg,其选择取决于您的系统.请参阅有关Matplotlib后端的此信息.相反,只有 plt.savefig('filename.svg')在希望拥有svg格式的文件时才应该使用.生成的文件将位于您的工作目录中,您只需在脚本完成后打开它.
要详细说明一些其他问题,不要理解单个行的含义:
plt.show() 假设您使用支持绘制到用户界面的后端(渲染器),将在屏幕上生成交互式绘图.
import matplotlib.pyplot as plt只需从matplotlib包中导入pyplot库中的函数和类,而plt部分就像制作一个昵称来更容易地访问这些函数.例如,plt.show(),plt.figure等代替不必键入出matplotlib.pyplot.show()每一次.另一方面,from pylab import *导入所有没有前缀的函数.一般情况下,我会避免使用,import *因为稍后回读代码会让人感到困惑.此外,pylab可能不是您在此处显示的代码所需的内容.
plt.figure()是初始化你的数字的命令.在这种情况下,由于您使用了plot = plt.figure,您可以输入plot.plot(xData, yData),因为您的变量图现在是图类的一部分.你可以使用ax,如果您对您需要执行一些操作一些附加轴,次要情节或彩条的例子.
我真的建议您浏览matplotlib网站上的pyplot教程,为您提供更全面,但仍然相对简短而简单的使用matplotlib的介绍.
小智 6
好的,答案很简单。(乌班图21.10)
您将需要安装某个版本的 PyQt。眼下:
pip install PyQt6
Run Code Online (Sandbox Code Playgroud)
pip install PyQt6
Run Code Online (Sandbox Code Playgroud)
plt.show()import matplotlib
matplotlib.use("QtAgg")
Run Code Online (Sandbox Code Playgroud)
这对我来说完美无缺。希望它也对你有用。
| 归档时间: |
|
| 查看次数: |
26686 次 |
| 最近记录: |