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

歌曲《今天》多曲线三维表达

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
import time# 设置中文字体,确保中文正常显示
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题def create_emotion_data():"""创建与《今天》歌词对应的情绪数据"""# 时间点,模拟歌曲进程(假设为3分钟,180秒)t = np.linspace(0, 180, 200)# 从歌词中提取的情绪emotions = {# 迷茫:开始较高,逐渐降低'迷茫': 0.8 * np.exp(-0.015 * t) + 0.1,# 领悟:逐渐增强'领悟': 0.7 * (1 - np.exp(-0.01 * t)),# 决心:中期达到高峰并保持'决心': 0.6 * np.where(t < 60, np.sin(t / 30), np.where(t < 120, 1, 0.8)),# 伤痛:前期较高,中期下降'伤痛': 0.7 * np.exp(-0.02 * (t - 20)) + 0.1 * np.sin(t / 10),# 希望:波动上升'希望': 0.5 * (1 - np.exp(-0.01 * t)) + 0.2 * np.sin(t / 20),# 紧张:在歌曲高潮部分出现'紧张': 0.6 * np.exp(-0.005 * ((t - 100) / 15) ** 2),# 成就:后期显著上升'成就': 0.8 * (1 - np.exp(-0.02 * (t - 120))) * np.where(t > 120, 1, 0),# 感恩:后期逐渐增强'感恩': 0.6 * (1 - np.exp(-0.015 * (t - 130))) * np.where(t > 130, 1, 0)}# 确保所有数据标准化到0-1范围for name in list(emotions.keys()):data = emotions[name]min_val, max_val = np.min(data), np.max(data)if max_val - min_val > 0:# 标准化emotions[name] = (data - min_val) / (max_val - min_val)else:emotions[name] = np.zeros_like(data)return t, emotionsdef plot_multi_curve(t, emotions):"""绘制多曲线情绪变化图"""plt.figure(figsize=(14, 8))# 曲线样式styles = [('blue', '-'), ('green', '--'), ('red', '-.'), ('cyan', ':'),('magenta', '-'), ('orange', '--'), ('purple', '-.'), ('brown', ':')]for i, (emotion, values) in enumerate(emotions.items()):color, linestyle = styles[i % len(styles)]plt.plot(t, values, label=emotion, color=color, linestyle=linestyle, linewidth=2)print(f"{emotion} 最大值: {np.max(values):.4f}")plt.title('刘德华《今天》- 歌词情绪变化', fontsize=16)plt.xlabel('时间 (秒)', fontsize=12)plt.ylabel('情绪强度', fontsize=12)plt.grid(True, alpha=0.3)plt.legend(fontsize=10, loc='upper left')plt.xlim(0, 180)plt.ylim(0, 1)plt.tight_layout()plt.show()def plot_3d_emotions(t, emotions):"""绘制三维情绪变化图"""# 创建网格数据emotion_names = list(emotions.keys())t_grid, e_grid = np.meshgrid(t, np.arange(len(emotion_names)))z_values = np.zeros_like(t_grid, dtype=np.float64)# 填充z值 - 与多曲线图使用完全相同的数据for i, emotion in enumerate(emotion_names):values = emotions[emotion]z_values[i, :] = valuesprint(f"三维图中 {emotion} 最大值: {np.max(values):.4f}")# 创建3D图形fig = plt.figure(figsize=(16, 9))ax = fig.add_subplot(111, projection='3d')# 绘制3D表面surf = ax.plot_surface(t_grid, e_grid, z_values, cmap=cm.viridis,alpha=0.8, edgecolor='k', linewidth=0.5,vmin=0, vmax=1)  # 颜色范围与情绪强度一致# 设置坐标轴标签ax.set_xlabel('时间 (秒)', fontsize=12)ax.set_ylabel('情绪类型', fontsize=12)ax.set_zlabel('情绪强度', fontsize=12)# 设置轴范围ax.set_xlim(0, 180)ax.set_ylim(0, len(emotion_names) - 1)ax.set_zlim(0, 1)# 设置y轴刻度为情绪名称ax.set_yticks(np.arange(len(emotion_names)))ax.set_yticklabels(emotion_names)# 设置标题ax.set_title('刘德华《今天》- 三维情绪变化', fontsize=16)# 添加颜色条cbar = fig.colorbar(surf, shrink=0.6, aspect=10, label='情绪强度')# 调整视角ax.view_init(elev=30, azim=45)plt.tight_layout()plt.show()def print_lyrics_segments():"""打印歌词片段,对应情绪变化"""lyrics = ["走过岁月我才发现世界多不完美\n成功或失败都有一些错觉","沧海有多广江湖有多深\n局中人才了解","生命开始情不情愿总要走完一生\n交出一片心不怕被你误解","谁没受过伤谁没流过泪\n何必要躲在黑暗里自苦又自怜","我不断失望不断希望\n苦自己尝笑与你分享","如今站在台上也难免心慌\n如果要飞得高就该把地平线忘掉","等了好久终于等到今天\n梦了好久终于把梦实现\n前途漫漫任我闯幸亏还有你在身旁","盼了好久终于盼到今天\n忍了好久终于把梦实现\n那些不变的风霜早就无所谓\n累也不说累"]emotions = list(create_emotion_data()[1].keys())print("\n" + "=" * 70)print("《今天》歌词片段与情绪对应".center(70))print("=" * 70)for i, (emotion, lyric) in enumerate(zip(emotions, lyrics)):print(f"\n【{emotion}】")print("-" * 30)print(lyric)time.sleep(1.5)def main():print("\n刘德华《今天》- 歌词情绪可视化\n")print("正在生成情绪数据...")# 创建情绪数据t, emotions = create_emotion_data()# 显示多曲线图表print("\n展示情绪强度变化多曲线图...")time.sleep(1)plot_multi_curve(t, emotions)# 显示3D图表print("\n展示三维情绪变化图...")time.sleep(1)plot_3d_emotions(t, emotions)# 打印歌词片段print_lyrics_segments()print("\n" + "=" * 70)print("可视化完成:二维和三维图表使用完全一致的情绪数据")print("=" * 70 + "\n")if __name__ == "__main__":main()

http://www.dtcms.com/a/400610.html

相关文章:

  • Ollama中的Modelfile文件的编写以及使用
  • 谷歌绘制的网站ui网页设计实训报告
  • 光流 | 基于光流算法的多目标跟踪技术
  • 男和男做的视频网站商城网站入驻系统
  • 设计师常用的图库网站网站维护一年多少费
  • 广告公司寮步网站建设厦门网站建设方案
  • 专门做各种产品测评的网站wordpress免费图床
  • 自己做整个网站的流程Wordpress企业主题XShuan
  • 怎么做付款链接网站网站制作多少钱方案
  • 网站设计公司长沙公司国外云服务器哪个好
  • SpringBoot与反射
  • 两个网站开发swot分析西安企业seo外包服务公司
  • 我国有哪些企业网站aspcms自适应网站
  • 公司网站系统建设策划书深圳好的高端企业网站建设公司
  • 让人做网站需要注意什农村自建房设计图一层楼平面图
  • 做视频网站都需要什么建设信用卡商城网站
  • 自己的服务器如何给网站备案成立做网站的公司有哪些
  • 【力扣LeetCode】 350_两个数组的交集II(原题的中文题目不太正确)
  • 广告网站建设流程wordpress图片自动打水印
  • 手机运用网站oa办公系统是什么系统
  • 好的结构设计网站如何设计服装网站规划
  • 怎么做学校官方网站网站开发技术协议
  • 在线音乐网站开发数据库wordpress文件上传系统
  • 物流成本高、效率低?智能调度或是破局关键
  • 域名注册服务的公司网站wordpress doc预览
  • 宣传 网站建设和政务公开在线医疗网站建设
  • 废品回收在哪个网站做效果好手游源码交易平台
  • 重庆建网站推广怎么做卡商网站
  • 手机网站建设一般多少钱诚信网站认证怎么做
  • 测试策略内容包含哪些