Python Tkinter Matplotlib: 使用直方图可视化数据
以下是完整的代码实现:
import matplotlib.pyplot as plt
from tkinter import *
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
def adef_keshihua(txt, window):
text.delete('1.0', END)
y_train = [0.724116199, 2.285849418, 0.292243314, 2.895797676, 0.438462215, 1.543319689, 1.169727273, 0.766681439, 0.769798934, 0.440894989, 2.10413745, 2.013255745, 0.781939731, 0.306292184, 0.438392904, 1.665304082, 1.156816479, 1.169240272, 1.563880105, 1.634383048, 1.916477293]
fig, ax = plt.subplots()
ax.hist(y_train, bins=20)
ax.set_xlabel('')
ax.set_ylabel('manyidu')
ax.set_title('Histogram')
histogram_window = Toplevel(root)
canvas = FigureCanvasTkAgg(fig, master=histogram_window)
canvas.draw()
canvas.get_tk_widget().pack()
toolbar = NavigationToolbar2Tk(canvas, histogram_window)
toolbar.update()
canvas.get_tk_widget().pack()
# 创建主窗口
root = Tk()
root.title('数据可视化')
# 创建文本框和按钮
text = Text(root, height=10, width=50)
text.pack()
btn = Button(root, text='绘制直方图', command=lambda: adef_keshihua(text, root))
btn.pack()
# 进入消息循环
root.mainloop()
代码解释:
-
导入库: 首先,我们导入
matplotlib.pyplot用于创建图形,tkinter用于创建 GUI,以及matplotlib.backends.backend_tkagg用于在 Tkinter 窗口中嵌入 Matplotlib 图形。 -
定义函数: 我们定义一个名为
adef_keshihua的函数,它接收一个文本框 (txt) 和一个窗口 (window) 作为参数。 -
创建直方图: 在函数中,我们使用
plt.subplots()创建一个空白图形和轴。然后,我们使用ax.hist()函数在轴上绘制直方图,bins=20表示将数据分成 20 个组。 -
设置标签: 使用
ax.set_xlabel()、ax.set_ylabel()和ax.set_title()设置直方图的坐标轴标签和标题。 -
创建新窗口: 我们使用
Toplevel()创建一个新的 Tkinter 窗口来显示直方图。 -
将图形嵌入窗口: 使用
FigureCanvasTkAgg()将图形嵌入到 Tkinter 窗口中。 -
绘制图形和工具栏: 使用
canvas.draw()绘制图形,并使用NavigationToolbar2Tk()添加一个导航工具栏。 -
创建主窗口: 创建一个名为
root的主窗口,并设置标题为 '数据可视化'。 -
创建文本框和按钮: 在主窗口中,创建了一个文本框和一个按钮。当点击按钮时,调用
adef_keshihua函数,并传递文本框和窗口作为参数。 -
启动主循环: 使用
root.mainloop()启动 Tkinter 的主循环,使应用程序能够响应用户交互。
这段代码演示了如何使用 Tkinter 和 Matplotlib 在 Python 中创建一个直方图,并将其嵌入到 Tkinter 窗口中。这对于在应用程序中进行数据可视化非常有用。
原文地址: https://www.cveoy.top/t/topic/oqcr 著作权归作者所有。请勿转载和采集!