Python绘制动态股价曲线图并保存视频

用akshare库获取英伟达(股票代码:105.NVDA) 在2014年6月19日到2024年6月19日期间的股票的收盘价数据(用后复权的收盘价);

基于后复权的收盘价数据,做一个动态股价曲线图,逐日显示英伟达股价的动态变化情况, 以mp4视频文件输出,保存到文件夹:E:\aivideo;

在大模型中使用如下提示词:

你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下:

用akshare库获取英伟达(股票代码:105.NVDA) 在2014年6月19日到2024年6月19日期间的股票的收盘价数据(用后复权的收盘价);

基于后复权的收盘价数据,做一个动态股价曲线图,逐日显示英伟达股价的动态变化情况, 以mp4视频文件输出,保存到文件夹:E:\aivideo;

注意:

每一步都要输出信息到屏幕上

日期格式是YYYYMMDD

设置matplotlib默认字体为'SimHei',文件路径为:C:\Windows\Fonts\simhei.ttf

mp4视频的分辨率1080p,码率10Mbps以内,视频时长控制在5分钟以内,格式为MP4格式;

stock_data['日期'] 列的数据类型是字符串,而不是日期时间类型。我们需要先将这一列转换为日期时间类型,然后再进行操作

历史行情数据-东财

接口: stock_us_hist

目标地址: https://quote.eastmoney.com/us/ENTX.html#fullScreenChart

描述: 东方财富网-行情-美股-每日行情

限量: 单次返回指定上市公司的指定 adjust 后的所有历史行情数据

输入参数

名称类型描述

symbolstr美股代码, 可以通过 ak.stock_us_spot_em() 函数返回所有的 pandas.DataFrame 里面的 代码 字段获取

periodstrperiod='daily'; choice of {'daily', 'weekly', 'monthly'}

start_datestrstart_date="20210101"

end_datestrend_date="20210601"

adjuststr默认 adjust="", 则返回未复权的数据; adjust="qfq" 则返回前复权的数据, adjust="hfq" 则返回后复权的数据

输出参数

名称类型描述

日期object-

开盘float64注意单位: 美元

收盘float64注意单位: 美元

最高float64注意单位: 美元

最低float64注意单位: 美元

成交量int32注意单位: 股

成交额float64注意单位: 美元

振幅float64注意单位: %

涨跌幅float64注意单位: %

涨跌额float64注意单位: 美元

换手率float64注意单位: %

接口示例

import akshare as ak

stock_us_hist_df = ak.stock_us_hist(symbol='106.TTE', period="daily", start_date="20200101", end_date="20240214", adjust="qfq")

print(stock_us_hist_df)

根据大模型给出的代码,排除错误后结果如下:

import akshare as ak
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
import os
from matplotlib.animation import FuncAnimation, FFMpegWriter
import matplotlib
matplotlib.rcParams['animation.ffmpeg_path'] = r'D:\Shotcut\ffmpeg.exe'
# 设置matplotlib默认字体为'SimHei'
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 获取英伟达股票数据
def get_stock_data():print("正在获取英伟达股票数据...")stock_data = ak.stock_us_hist(symbol='105.NVDA', period="daily", start_date="20140619", end_date="20240619", adjust="hfq")print("数据获取完成。")return stock_data# 转换日期格式
def convert_date_format(stock_data):print("正在转换日期格式...")stock_data['日期'] = pd.to_datetime(stock_data['日期'], format='%Y-%m-%d')print("日期格式转换完成。")return stock_data# 创建动态股价曲线图
def create_animation(stock_data):print("正在创建动态股价曲线图...")fig, ax = plt.subplots(figsize=(19.2, 10.8))ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))ax.xaxis.set_major_locator(mdates.YearLocator())line, = ax.plot([], [], lw=2)def init():ax.set_xlim(stock_data['日期'].iloc[0], stock_data['日期'].iloc[-1])ax.set_ylim(stock_data['收盘'].min(), stock_data['收盘'].max())return line,def update(frame):line.set_data(stock_data['日期'].iloc[:frame], stock_data['收盘'].iloc[:frame])ax.relim()ax.autoscale_view()return line,ani = FuncAnimation(fig, update, frames=len(stock_data), init_func=init, blit=True)print("动态股价曲线图创建完成。")return ani# 保存视频
def save_video(ani):print("正在保存视频...")if not os.path.exists(r'E:\aivideo'):os.makedirs(r'E:\aivideo')writer = FFMpegWriter(fps=30, metadata=dict(artist='Me'), bitrate=10000)ani.save(r'E:\aivideo\nvidia_stock_price.mp4', writer=writer)print("视频保存完成。")# 主函数
def main():stock_data = get_stock_data()stock_data = convert_date_format(stock_data)ani = create_animation(stock_data)save_video(ani)if __name__ == "__main__":main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP反序列化字符逃逸详解

这段时间遇到几个关于反序列化的字符逃逸的程序&#xff0c;今天来分享一下经验。 <?php function filter($str){ return str_replace(bb, ccc, $str); } class A{ public $nameaaaa; public $pass123456; } $AAnew A(); $resfilter(serialize($AA)); $cunserialize($res)…

Vue报错:Component name “xxx” should always be multi-word vue/multi-word-component

问题&#xff1a;搭建脚手架时报错&#xff0c;具体错误如下&#xff1a; ERROR in [eslint] E:\personalProject\VueProjects\vueproject2\src\components\Student.vue10:14 error Component name "Student" should always be multi-word vue/multi-word-compon…

【办公类-52-01】20240703计划小结的缩略版制作(获取字符最多的3个字,删除字后面的内容)

背景需求&#xff1a; 每学期写完“信息计划”“信息小结”都需要上传园所“圆圆通”的信息公开&#xff0c;领导要求使用缩略版&#xff08;就是删掉一些内容&#xff0c;不能整篇都发布出去&#xff0c;以免被抄袭&#xff1f;&#xff09; 2023年第二学期的信息小结有16页 …

CX1概念车空气动力学设计,打造典型“美式肌肉车”风格

Altair CX1概念车的设计 CX1是Altair公司为了满足汽车行业的设计和虚拟仿真需求而开发的一款概念车型。该车总长接近5米&#xff0c;外观具有典型的美式肌肉车的风格&#xff0c;具有视觉冲击力。 车辆的外形设计过程就是风险管理&#xff0c;设计师想要一个大胆而富有表现力的…

赢麻了!苹果再获OpenAI董事会观察员席位!0元白嫖ChatGPT,比肩微软

今年&#xff0c;苹果和OpenAI的合作有点密切。 据最新消息&#xff0c;苹果获得OpenAI的董事会观察员席位。 苹果应用商店负责人、前营销主管菲尔席勒&#xff08;Phil Schiller&#xff09;将担任这一职位&#xff0c;但Schiller迄今为止尚未出席任何OpenAI的会议。 观察员…

C语言刷题小记

前言 本篇博客和大家分享一些C语言的OJ题目&#xff0c;希望大家可以通过这些题目进一步提升自己的编程能力&#xff0c;如果你对本篇内容感兴趣&#xff0c;可以一键三连&#xff0c;多多关注&#xff0c;下面进入正文部分。 题目1 十六进制转十进制 描述 BoBo写了一个十六…

firewalld(6)自定义services、ipset

简介 在前面的文章中我们已经介绍了zone、rich rule 、--direct等功能和基本配置。在前面文章中&#xff0c;我们提到过firewalld内置了很多服务&#xff0c;可以通过firewall-cmd --get-services来查看服务&#xff0c;也可以通过配置文件查看这些服务/var/lib/firewalld/ser…

【Unity 角色控制器组件】

【Unity 角色控制器组件】 Character Controller&#xff1a; Unity 内置的一个组件&#xff0c;用于提供高级的物理控制&#xff0c;允许开发者控制角色的移动、跳跃和碰撞。 csharp csharp // 假设你已经有了一个带有Character Controller组件的游戏对象// 获取Character Co…

In Ictu Oculi: Exposing AI Created Fake Videos by Detecting Eye Blinking

文章目录 In Ictu Oculi: Exposing AI Created Fake Videos by Detecting Eye Blinking背景关键点内容预处理Long-Term Recurrent CNNsLSTM-RNN模型训练实验data启示In Ictu Oculi: Exposing AI Created Fake Videos by Detecting Eye Blinking 会议:2018 IEEE International…

容嬷嬷给紫薇过生日:鬼畜搭台,AI带货

刚入7月&#xff0c;短视频平台已被AI视频续写占领。 类似于紫薇在地牢里被容嬷嬷喂西瓜、喂鸡翅、喂蛋糕。张学友在《旺角卡门》的经典镜头突然给你微笑、嘟嘴、甚至祝你生日快乐。甚至&#xff0c;还有吴京从打斗戏变成亲吻戏。 在AI续写的短视频里&#xff0c;你永远也想象…

【最新综述】医学图像分割深度半监督学习(上)

摘要&#xff1a; 最近&#xff0c;深度学习在各种计算机视觉任务中展现出了巨大的前景。然而&#xff0c;在许多实际应用中&#xff0c;没有大规模的标记数据集&#xff0c;这限制了深度学习的应用。为了解决这个问题&#xff0c;半监督学习引起了计算机视觉界的广泛关注&…

二叉树的前中后序遍历(递归法、迭代法)leetcode144、94/145

leetcode144、二叉树的前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a; 输…

CesiumJS【Basic】- #057 绘制纹理填充多边形(Primitive方式)

文章目录 绘制纹理填充多边形(Primitive方式)1 目标2 代码2.1 main.ts绘制纹理填充多边形(Primitive方式) 1 目标 使用Primitive方式绘制绘制纹理填充多边形 2 代码 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium.Viewer

测试Andrew NG的语言翻译Agent

我正在测试 Andrew Ng 的语言翻译 A​​I 代理系统及其在逆变换下的稳定性。 给定源语言的文本&#xff0c;我们应用翻译函数 f&#xff0c;然后应用 f 的逆。它应该是不变的&#xff1a; 但是&#xff0c;数学与语言翻译有什么关系&#xff1f; 在完美的系统中&#xff0c;从…

springboot异常产生原因

DataIntegrityViolationException Cause: java.sql.SQLException: Field ‘id’ doesn’t have a default value org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: java.sql.SQLException: Field id doesnt have a default …

[译]全栈Redux实战

本文乱译自一篇英文博文&#xff08;Full-Stack Redux Tutorial&#xff09;&#xff0c;本人英语能力不足&#xff0c;技术能力有限&#xff0c;如有错误&#xff0c;多多包涵。 #关于ReduxReactImmutable的测试先行开发综合指南 Redux是最近发生在js界令人兴奋的事儿。它把…

提升Unity WebGL游戏启动速度

一、查看启动耗时 通过修改unity-namespace.js中hideTimeLogModal为false&#xff0c;显示timelog开发者可以看到小游戏目前的启动首屏时长&#xff1a; 将其设置为false后&#xff0c;启动小程序后就会显示启动耗时 要知道各个阶段的含义&#xff0c;我们必要理解启动流程。 …

springboot 整合 mybatis-plus

一.前言 1. mybatis-plus是什么 mybatis-plus是一个对mybati框架的拓展框架&#xff0c;它在mybatis框架基础上做了许多的增强&#xff0c;帮助我们快速的进行代码开发。目前企业开发中&#xff0c;使用mybati的项目基本会选择使用mybatis-plus来提升开发效率。 2.官网地址&…

LT8668SXC 、LT8668SX-D 、LT8668SX三种芯片的相似与不同

一、LT8668SXC(支持eDP输出&#xff09; 定义:LT8668SXC配置在HDMI2.1标准下工作&#xff0c;最大数据速率为8Gbps。 LT8668SXC还可以配置为在Type-C输入或DP1.4a下工作&#xff0c;数据速率高达8.1Gbps。 eDP1.4b输出由8个数据通道组成&#xff0c;支持RBR (1.62Gbps)、HBR (2…

比较多种msvcr110.dll丢失的解决方法,哪一种更加方便?

当遇到“msvcr110.dll丢失”这种问题时&#xff0c;这通常意味着你的系统中缺少了Microsoft Visual C 2012 Redistributable的组件。下面我将详细介绍五种解决方法&#xff0c;并对比它们的优点。 一.多种msvcr110.dll丢失的解决方法 方法 1: 重新安装Microsoft Visual C 2012…