**
效果展示
**
**
代码介绍
**
1. 库的作用
NumPy (numpy):用于生成和操作数值数组。它在这个程序中用于创建 x 轴的取值范围以及计算 y 轴对应的函数值。
Matplotlib (matplotlib):用于生成二维绘图。这里的 pyplot 模块帮助创建图表,而 FigureCanvasTkAgg 则用于将绘图嵌入到 Tkinter 窗口中。
Tkinter (tkinter):Python 自带的图形用户界面库。用于创建图形界面(窗口、按钮、滑动条等),并允许用户交互。
2. 绘制函数图像
程序根据公式 y = x^(2/3) + 0.9 * sqrt(10 - x^2) * sin(k * pi * x) 计算 y 值。通过调整 k 值,函数曲线会随之改变,用户可以通过滑动条实时调整参数 k,从而动态地生成函数的图像。
3. 动态交互
滑动条(Scale):滑动条允许用户调整参数 k 的值,范围从 -50 到 50,步进值为 0.1。每当滑动条的值发生变化时,图像会根据新的 k 值重新绘制。
4. 窗口与布局
Tkinter 窗口:程序创建了一个 600x600 大小的窗口,显示绘制的图形以及滑动条。窗口右上角还有一个自定义的图标。
标签与版权信息:窗口底部显示了版权信息 “by ---- Panda”,作为文本标签。
5. 初始绘图
程序在启动时会默认以 k = 0 绘制初始图像,然后根据用户的滑动条调整来更新图像。
6. GUI 与绘图结合
通过 matplotlib 和 Tkinter 的结合,程序能将图形嵌入 GUI 窗口中并实现实时交互的功能,绘图会在每次参数变化后即时更新并重新绘制。
**
部分源码
**
#完整源码gongzhonghao:PandaYY回复1013
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import tkinter as tk
from tkinter import Scale
def plot_function(k):
x_positive = np.linspace(0, np.sqrt(10), 500)
y_positive = (x_positive ** (2 / 3) + 0.9 * np.sqrt(10 - x_positive ** 2) * np.sin(k * np.pi * x_positive))
x_negative = -np.flip(x_positive)
y_negative = np.flip(y_positive)
# 拼接正值部分和负值部分
x_full = np.concatenate((x_negative, x_positive))
y_full = np.concatenate((y_negative, y_positive))
ax.clear()
ax.plot(x_full, y_full, color='red')
ax.set_xlim(-10, 10)
ax.set_ylim(-10, 10)
ax.grid(True)
canvas.draw()
# 初始化Tkinter窗口
root = tk.Tk()
root.title("Panda")
root.geometry("600x600")
icon = tk.PhotoImage(file="logo.gif")
root.iconphoto(True, icon)
fig, ax = plt.subplots()
# 将matplotlib的图嵌入到Tkinter
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
# 创建一个滑动条,用于动态改变k的值