需要帮助使用matplotlib在tkinter中绘制图形[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需要帮助使用matplotlib在tkinter中绘制图形[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我正在编写一个程序,使用matplotlib
和tkinter
通过GUI绘制图形。一切都按计划工作,除非我输入x
和y
变量后,绘制的图表是精确的x = y线,除了轴上的数字按输入顺序排列。
这是代码:
我已经尝试过使用axis
的matplotlib
命令,但它没有用。
x=[]
y=[]
enterx = ttk.Entry(self)
enterx.pack()
enterx.insert(0,"X")
entery = ttk.Entry(self)
entery.pack()
entery.insert(0,"Y")
def creategraph(self,parent,x,y,enterx,entery):
f = Figure(figsize=(5,5), dpi=100)
a = f.add_subplot(111)
textx = enterx.get()
texty = entery.get()
x=textx.split(",")
y=texty.split(",")
a.plot(x,y)
canvas = FigureCanvasTkAgg(f,self)
canvas.draw()
toolbar = NavigationToolbar2Tk(canvas,self)
toolbar.update()
canvas._tkcanvas.pack(side=tk.TOP,fill=tk.BOTH, expand=True)
canvas.get_tk_widget().pack(side=tk.BOTTOM,fill=tk.BOTH, expand=True)
该代码不包括tkinter
窗口初始化或小部件。我认为它会绘制一条在轴上具有均匀间隔数字的线,但事实并非如此。
答案
问题似乎是您绘制的值是字符串,因此顺序不是基于数字。以下是一个解决方案:使用int
将字符串值转换为map
(整数)类型。修改后的代码行由注释标记。
def creategraph(self,parent,x,y,enterx,entery):
f = Figure(figsize=(5,5), dpi=100)
a = f.add_subplot(111)
textx = enterx.get()
texty = entery.get()
x=list(map(int, textx.split(","))) # <---- Convert strings to int
y=list(map(int, texty.split(","))) # <---- Convert strings to int
a.plot(x,y)
以上是关于需要帮助使用matplotlib在tkinter中绘制图形[重复]的主要内容,如果未能解决你的问题,请参考以下文章
matplotlib - Blender python中没有名为tkinter的模块
使用 matplotlib 在 Tkinter 中绘制数据 - 在列表之间切换