我的绘图代码似乎没有显示图形(第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)
6条答案
按热度按时间cbjzeqam1#
您正在尝试使用一个不会使用
plt.show()
生成图形的后端。相反,您需要使用另一个后端,如WXAgg或QT4agg,其选择将取决于您的系统。请参阅Matplotlib后端上的this information。相反,如果您希望拥有svg格式的文件,则应该使用onlyplt.savefig('filename.svg')
。生成的文件将位于您的工作目录中。你只需要在脚本完成后打开它。详细解释一下,以回答你关于不理解单行含义的其他一些问题:
plt.show()
将在您的屏幕上生成一个交互式绘图,假设您使用的是支持绘图到用户界面的后端(渲染器)。import matplotlib.pyplot as plt
只是从matplotlib包中导入pyplot库中的函数和类,as 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 tutorial,给予你一个更全面的,但仍然相对简短和简单的关于使用matplotlib的介绍。
m2xkgtsf2#
如果你在虚拟环境中使用
--no-site-packages
执行pip install matplotlib
,而plt.show()
没有显示出你的图:1)
apt-get
安装matplotlib,然后virtualenv --system-site-packages FOLDERNAME
2)this guide:
指南中还有另一个步骤,但对我来说不是必要的(在
~/.config/matplotlib/matplotlibrc
中将后端设置为GTKAgg
)bmp9r5qi3#
答案很简单(Ubuntu 21.10)
PyQt
你需要安装一些PyQt版本。目前:
指定GUI后台
尝试
plt.show()
jw5wzhpr4#
在我的案例中,我通过从www.example.com安装python 3.7解决了这个问题python.org,然后简单地在我的IDE(PyCharm CE)上更改了解释器+当然再次安装了所有必要的软件包。没有必要使用另一个后端,我在我的项目中保留了TkAgg。
t9eec4r05#
试试这个:-
并请尝试no将 name 作为用户的输入
6bc51xsx6#
我的问题略有不同:
我有一个Jupyter Notebook
在开始的时候,但后来我重新导入它,重新导入后的数字不起作用。删除第二个导入似乎修复了它。