Python动态爱心函数

**

效果展示

**
在这里插入图片描述

**

代码介绍

**

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的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值