当前位置: 首页 > article >正文

用matplotlib生成一个炫酷的爱心

在这里插入图片描述
下面是结合数学方程和可视化技巧,生成一个炫酷的爱心效果:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
# 创建画布
fig = plt.figure(figsize=(8, 8))
ax = plt.axes(xlim=(-2.5, 2.5), ylim=(-3, 2))
ax.set_facecolor('black')  # 设置黑色背景
plt.axis('off')
# 爱心参数方程(改进版)
def heart(t):t = np.radians(t)x = 1.5 * (16 * np.sin(t)**3)y = 1.5 * (13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t))return x/20, y/20  # 缩放尺寸
# 生成角度数组
theta = np.linspace(0, 360, 1000)
# 初始化散点
scat = ax.scatter([], [], c=[], cmap='rainbow', s=40, alpha=0.7, edgecolors='w')
# 创建动画函数
def animate(angle):# 生成旋转矩阵rad = np.radians(angle)rot_matrix = np.array([[np.cos(rad), -np.sin(rad)],[np.sin(rad), np.cos(rad)]])# 生成基础爱心坐标x, y = heart(theta)points = np.vstack((x, y))# 应用旋转rotated = np.dot(rot_matrix, points)# 颜色渐变参数(随时间变化)colors = np.sin(0.1*theta + np.radians(angle)*2)# 更新散点属性scat.set_offsets(rotated.T)scat.set_array(colors)scat.set_sizes(np.linspace(30, 60, len(theta)))  # 大小渐变# 添加随机星星特效stars_x = np.random.uniform(-2.5, 2.5, 30)stars_y = np.random.uniform(-3, 2, 30)sizes = np.random.uniform(10, 100, 30)plt.scatter(stars_x, stars_y, s=sizes, c='white', alpha=0.3, edgecolors='none')return scat,
# 创建动画
ani = FuncAnimation(fig, animate, frames=np.arange(0, 360, 2), interval=50)
# 添加标题
plt.title('Creative Rotating Heart', color='white', fontsize=16, y=0.9)
# 显示动画
plt.show()

代码解析:

  1. 数学方程:使用改进的心形参数方程,通过组合多个余弦项创建更柔和的爱心形状

  2. 动态效果

  • 实时旋转:使用旋转矩阵实现平滑旋转

  • 颜色渐变:彩虹色系映射结合角度参数

  • 大小渐变:点的大小从30到60渐变

  1. 视觉效果增强
  • 黑色背景与白色边框点

  • 半透明效果(alpha=0.7)

  • 随机星星特效(每次刷新随机生成)

  1. 参数调整技巧
  • 缩放系数(1.5倍原始方程)

  • 角度采样密度(1000个点)

  • 旋转速度(每帧2度)

进阶改进建议:

  1. 添加3D效果:
from mpl_toolkits.mplot3d import Axes3D
ax = fig.add_subplot(111, projection='3d')
# 在z轴添加波动:z = 0.5 * np.sin(2*t)
  1. 自定义颜色映射:
colors = np.linspace(0, 1, len(theta))
cmap = plt.cm.get_cmap('hsv', 256)
  1. 添加交互功能:
def onclick(event):# 点击生成文字特效plt.text(event.xdata, event.ydata, '❤', color='red', fontsize=20)
fig.canvas.mpl_connect('button_press_event', onclick)

这个动画会生成一个持续旋转的渐变爱心,背景带有随机闪烁的星星特效。颜色会随着旋转角度动态变化,每个点的大小也呈现渐变效果,整体呈现出梦幻般的视觉效果。可以通过调整colormap(‘rainbow’)、旋转速度(interval参数)和缩放系数来创建不同风格的爱心效果。

相关文章:

用matplotlib生成一个炫酷的爱心

下面是结合数学方程和可视化技巧,生成一个炫酷的爱心效果: import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation # 创建画布 fig plt.figure(figsize(8, 8)) ax plt.axes(xlim(-2.5, 2.5), ylim(-3,…...

【leetcode hot 100 300】最长递增子序列

错误解法:在每次更新db[i]时,如果当前nums[i]>nums[i-1]就db[i-1]1,否则db[i-1] class Solution {public int lengthOfLIS(int[] nums) {int n nums.length;int[] db new int[n]; // db[i]表示到i的最长严格递增子序列的长度db[0] 1;f…...

oracle 12c密码长度,复杂度查看与设置

一 密码长度和复杂度 Oracle 数据库通过 PASSWORD_VERIFY_FUNCTION 来控制密码复杂度。 1.1 查看当前的密码复杂度设置 SELECT * FROM dba_profiles WHERE resource_name PASSWORD_VERIFY_FUNCTION; LIMIT表示分配给该 PROFILE 的密码验证函数名称。如果为 NULL,…...

数据结构——哈希技术及链地址法

目录 一、哈希的定义 二、哈希冲突定义 三、构造哈希函数的方法 四、四种解决哈希冲突的方法 4.1 开放地址法 4.2 链地址法 4.3 再散列函数法 4.4 公共区溢出法 五、链地址法结构体设计 六、基本操作的实现 6.1 哈希函数 6.2 初始化 6.3 插入值 6.4 删除值 6.5 查…...

开源CMS的模块化设计和API接口如何具体影响其扩展性?

优秀的CMS系统都有自己主打的特点,开源CMS凭借其灵活性和低成本优势占据了市场主流地位,而模块化设计与API接口正是其扩展性的两大基石。本文将深入探讨这两大技术特性是如何影响cms的扩展性的。 一、模块化设计:功能解耦与生态繁荣的引擎 …...

【Docker】快速部署 Certbot 并为 Nginx 服务器配置 SSL/TLS 证书

【Docker】快速部署 Certbot 并为 Nginx 服务器配置 SSL/TLS 证书 引言 Certbot 是一个免费的开源工具,用于自动化管理和获取 SSL/TLS 证书,主要用于与 Let’s Encrypt 证书颁发机构交互。 步骤 Nginx 挂载 certbot 文件夹。 docker run -d \--name…...

Redis下载稳定版本5.0.4

https://www.redis.net.cn/download/ Redis下载 Redis 版本号采用标准惯例:主版本号.副版本号.补丁级别,一个副版本号就标记为一个标准发行版本,例如 1.2,2.0,2.2,2.4,2.6,2.8,奇数的副版本号用来表示非标准版本,例如2.9.x发行版本是Redis 3.0标准版本的非标准发行版本…...

Google Chrome下载受限制的解决方案【方法指南】

在国内使用网络时,部分用户在尝试访问Google Chrome官网下载谷歌浏览器时,常常遇到网页无法打开或文件下载失败的情况。这种下载受限制的问题多由网络访问政策或DNS解析异常导致。为了正常获取Google Chrome的最新版安装程序,用户需要通过一些…...

Linux关于git上传大文件的解决方案:使用Git LFS

最近想要上传sdk到gitlab仓库上,但是使用git push的时候发现限制文件上传的大小限制到了100MB。 保持当前仓库的干净,要么重新拉取,要么git reset HEAD^ --hard这个命令来重新进行commit,直到撤回到代码上显示没有commit的地方为止…...

JAVA后端八股面试经验总结-前言篇

1️⃣个人暑期实习面试情况 暑期实习面试告一段段落了 陆陆续续大小厂有20+Java后端开发的面经 2️⃣为什么要写这个呢? ①首先,了解最重点的面试最爱问的题型有哪些? 我会整理出我面到过至少2次的题目和回答方式&#xff0…...

《计算机名人堂》专栏介绍:先驱之路

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 🌟引言:先驱之路一、出发点:讲述数字世界的缔…...

参照Spring Boot后端框架实现序列化工具类

本文参照Jackson实现序列化工具类,旨在于简化开发 JacksonUtil.class public class JacksonUtil {private JacksonUtil() {}/*** 单例*/private final static ObjectMapper OBJECT_MAPPER;static {OBJECT_MAPPER new ObjectMapper();}private static ObjectMappe…...

mysql 删除表等待

今天有个表加字段,语句是先删除,后重新建,表没有数据 ,但是删除一个表的时候,语句drop table 提示超时 show processlist 后,等待类型是 Waiting for table metadata lock 取消重试几次后仍然是如此…...

MCP工具的配置文件格式是怎么样的?MCP教程平台推荐

MCP(Model Context Protocol)配置文件是AI开发中连接MCP服务器的核心文件,采用JSON格式定义服务参数。它广泛应用于Cursor、ChatWise等AI开发工具,帮助开发者快速配置本地或远程MCP服务。本文将深入解析MCP配置文件的结构、获取方…...

网络安全法规与入门指南

在当今数字化时代,网络安全已成为保障个人隐私、企业利益和国家安全的关键领域。随着网络攻击的日益复杂和频繁,了解和遵守网络安全法规变得尤为重要。本文将深入探讨网络安全相关法规,并为想要进入这一领域的读者提供实用的入门指南。 一、…...

医院访客登记如何做才能更高效?

在医院工作过的朋友,大概都有过这样的体验:一到探视时间,门诊大厅、病房入口就开始拥堵,尤其是一些管控较严的科室,如ICU、手术区、儿科病房,来访人员必须逐一登记信息。人一多,就容易出错、漏登…...

学习笔记五——Rust 控制流全解析

📚 目录 什么是控制流?Rust 有什么特别?if 表达式完整语法loop / while / for 三种循环写法match 表达式 _ 通配符深入解释if let 表达式用法与场景Option、Some、None 全面通俗讲解 "Tom" 和 "Tom".to_string() 有啥本…...

我的Hexo自动Webhook部署方案

前言 最近我也是重新开始管理我的博客网站了,之前大概有了半年的时间没有写文章了。也是经过这半年的学习,我了解的知识更多,更广了。 当我开始写 Hexo 博客的时候,首先我得把 Markdown 文件内容拷贝到服务器上,然后写…...

智慧医院室内导航系统架构拆解:技术选型与性能攻坚指南

本文面向医院信息化团队技术负责人及医疗IoT解决方案开发者,聚焦解决大规模院区导航系统的扩展性、多源数据融合及实时路径规划等技术难点,提供从架构到落地的完整技术路线图。 如需获取智慧医院导航导诊系统解决方案请前往文章最下方获取,如…...

Docker:安装与部署 Nacos 的技术指南

1、简述 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个动态服务发现、配置管理和服务治理的综合解决方案,适用于微服务架构。 Nacos 主要功能: 服务发现与注册:支持 Dubbo、Spring Cloud 等主流微服务框架的服务发现与注册。动态配置管理:支持…...

【大模型理论篇】关于生成式模型中联合分布概率学习必要性以及GPT是生成式模型的讨论

1. 背景 之前我们在《生成式模型与判别式模型对比(涉及VAE、CRF的数学原理详述)》以及《生成式模型算法原理深入浅出(涉及Stable Diffusion、生成对抗网络、高斯混合模型、隐马尔可夫模型、朴素贝叶斯等算法原理分析及生成式模型解释)》中,我…...

tailwindcss 4 使用的一些注意点

目录 一、tailwindcss 4 官网地址变更了 二、自定义颜色的使用方式 三、安装的时候可能的报错 一、tailwindcss 4 官网地址变更了 之前的官网地址是:Tailwind CSS 中文网 现在的官网地址是:Tailwind CSS - Rapidly build modern websites without e…...

案例分析:东华新径,拉动式生产的智造之路

目录 文章目录 目录南京东华智能转向系统有限公司是一家什么公司?背景知识:新能源汽车生产制造流程简介东华遇见了什么问题?东华希望如何解决?解决思路:从 “推动式生产” 到 “拉动式生产”,从 “冗余式思…...

stm32工程,拷贝到另一台电脑编译,错误提示头文件找不到cannot open source input file “core_cm4.h”

提示 cannot open source input file “core_cm4.h” ,找不到 [ core_cm4.h ] 这个头文件 . 于是我在原电脑工程文件里找也没有找到这个头文件 接下来查看原电脑keil的头文件引入配置,发现只引入了工程文件下的头文件, 那么core_cm4.h到底哪里来的? (到现在我也不清楚怎…...

无锡东亭无人机培训机构电话

无锡东亭无人机培训机构电话,随着科技的迅猛发展,无人机逐渐走入我们的生活和工作领域,成为多种行业中不可或缺的工具。而在其广泛的应用中,如何正确、熟练地操控无人机成为了关键。因此,找到一家专业的无人机培训机构…...

Linux操作系统的计算机体系结构与网络安全的深度关联

在当今数字化时代,Linux操作系统因其开源、稳定和安全性而被广泛应用于服务器、嵌入式系统和云计算等领域。本文将深入探讨Linux的计算机体系结构,并分析其在网络安全中的关键作用。 一、Linux的计算机体系结构 (一)基于冯诺依曼…...

大厂文章阅读

1.异步任务处理系统,如何解决业务长耗时、高并发难题? 1)任务失败如何处理(CAS失败也可用):1.指数退避,匹配下游任务执行系统的处理能力。比如收到下游任务执行系统的流控错误,或者感知到任务执行成为瓶颈,需要指数退…...

卷积神经网络 CNN 系列总结(二)---数据预处理、激活函数、梯度、损失函数、优化方法等

数据预处理 零中心化、归一化 关于数据预处理我们有3个常用的符号,数据矩阵X,假设其尺寸是[N x D](N是数据样本的数量,D是数据的维度)。 均值减法(Mean subtraction)是预处理最常用的形式。它对数据中每个独立特征减去平均值,从几何上可以理解为在每个维度上都将数据…...

速学Android 16新功能:带有进度的通知类型

前言 在当前已公布的Android 16版本中新增了一系列的功能特性和API,如: 动态壁纸的内容处理,提供新的 content API 预测性返回更新,添加了finishAndRemoveTaskCallback() 和 moveTaskToBackCallback等API 健康数据共享更新&…...

微信小程序开发:微信小程序上线发布与后续维护

微信小程序上线发布与后续维护研究 摘要 微信小程序作为移动互联网的重要组成部分,其上线发布与后续维护是确保其稳定运行和持续优化的关键环节。本文从研究学者的角度出发,详细探讨了微信小程序的上线发布流程、后续维护策略以及数据分析与用户反馈处理的方法。通过结合实…...