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

python生成图表

# 必须放在所有import最顶部!解决MKL/PIL加载卡死 import os os.environ["MKL_THREADING_LAYER"] = "GNU" # 禁用PIL部分加速,避免中断 os.environ["PILLOW_NO_JPEG2000"] = "1" import matplotlib.pyplot as plt import pandas as pd from io import StringIO import matplotlib.dates as mdates # ---------------------- 完整数据内置 ---------------------- data_text = """净值日期 单位净值 累计净值 2025/12/29 0.9556 0.9556 2025/12/30 0.9595 0.9595 2025/12/31 0.9274 0.9274 2026/1/1 0.9274 0.9274 2026/1/2 0.9274 0.9274 2026/1/3 0.9274 0.9274 2026/1/4 0.9274 0.9274 2026/1/5 0.9587 0.9587 2026/1/6 0.9758 0.9758 2026/1/7 1.0108 1.0108 2026/1/8 0.9959 0.9959 2026/1/9 1.0130 1.0130 2026/1/10 1.0130 1.0130 2026/1/11 1.0130 1.0130 2026/1/12 1.0391 1.0391 2026/1/13 1.0092 1.0092 2026/1/14 1.0292 1.0292 2026/1/15 1.0151 1.0151 2026/1/16 1.0456 1.0456 2026/1/17 1.0456 1.0456 2026/1/18 1.0456 1.0456 2026/1/19 1.0620 1.0620 2026/1/20 1.0571 1.0571 2026/1/21 1.0749 1.0749 2026/1/22 1.0862 1.0862 2026/1/23 1.0872 1.0872 2026/1/24 1.0872 1.0872 2026/1/25 1.0872 1.0872 2026/1/26 1.0692 1.0692 2026/1/27 1.0927 1.0927 2026/1/28 1.0776 1.0776 2026/1/29 1.0536 1.0536 2026/1/30 1.0842 1.0842 2026/1/31 1.0842 1.0842 2026/2/1 1.0842 1.0842 2026/2/2 0.9944 0.9944 2026/2/3 1.0638 1.0638 2026/2/4 1.0405 1.0405 2026/2/5 1.0124 1.0124 2026/2/6 0.9921 0.9921 2026/2/7 0.9921 0.9921 2026/2/8 0.9921 0.9921 2026/2/9 1.0556 1.0556 2026/2/10 1.0287 1.0287 2026/2/11 1.0330 1.0330 2026/2/12 1.0870 1.0870 2026/2/13 1.0967 1.0967 2026/2/14 1.0967 1.0967 2026/2/15 1.0967 1.0967 2026/2/16 1.0967 1.0967 2026/2/17 1.0967 1.0967 2026/2/18 1.0967 1.0967 2026/2/19 1.0967 1.0967 2026/2/20 1.0967 1.0967 2026/2/21 1.0967 1.0967 2026/2/22 1.0967 1.0967 2026/2/23 1.0967 1.0967 2026/2/24 1.1248 1.1248 2026/2/25 1.1642 1.1642 2026/2/26 1.1967 1.1967 2026/2/27 1.2190 1.2190 2026/2/28 1.2190 1.2190 2026/3/1 1.2190 1.2190 2026/3/2 1.2350 1.2350 2026/3/3 1.1522 1.1522 2026/3/4 1.1110 1.1110 2026/3/5 1.2077 1.2077 2026/3/6 1.2628 1.2628 2026/3/7 1.2628 1.2628 2026/3/8 1.2628 1.2628 2026/3/9 1.2131 1.2131 2026/3/10 1.2723 1.2723 2026/3/11 1.2226 1.2226 2026/3/12 1.1750 1.1750 2026/3/13 1.1281 1.1281 2026/3/14 1.1281 1.1281 2026/3/15 1.1281 1.1281 2026/3/16 1.1398 1.1398 2026/3/17 1.0404 1.0404 2026/3/18 1.0824 1.0824 2026/3/19 1.0067 1.0067 2026/3/20 0.9817 0.9817 2026/3/21 0.9817 0.9817 2026/3/22 0.9817 0.9817 2026/3/23 0.9039 0.9039 2026/3/24 0.9423 0.9423 2026/3/25 0.9627 0.9627 2026/3/26 0.9261 0.9261 2026/3/27 0.9212 0.9212 2026/3/28 0.9212 0.9212 2026/3/29 0.9212 0.9212 2026/3/30 0.9142 0.9142 2026/3/31 0.8867 0.8867 2026/4/1 0.9392 0.9392 2026/4/2 0.9065 0.9065 2026/4/3 0.9159 0.9159 2026/4/4 0.9159 0.9159 2026/4/5 0.9159 0.9159 2026/4/6 0.9159 0.9159 2026/4/7 0.9196 0.9196 2026/4/8 1.0605 1.0605 2026/4/9 1.0721 1.0721 2026/4/10 1.1310 1.1310 2026/4/11 1.1310 1.1310 2026/4/12 1.1310 1.1310 2026/4/13 1.1597 1.1597 2026/4/14 1.1981 1.1981 2026/4/15 1.2265 1.2265 2026/4/16 1.2759 1.2759 2026/4/17 1.3194 1.3194 2026/4/18 1.3194 1.3194 2026/4/19 1.3194 1.3194 2026/4/20 1.3061 1.3061 2026/4/21 1.2973 1.2973 2026/4/22 1.3597 1.3597 2026/4/23 1.3377 1.3377 2026/4/24 1.3256 1.3256 2026/4/25 1.3256 1.3256 2026/4/26 1.3256 1.3256 2026/4/27 1.3349 1.3349 2026/4/28 1.3163 1.3163 2026/4/29 1.3280 1.3280 2026/4/30 1.3860 1.3860 2026/5/1 1.3860 1.3860 2026/5/2 1.3860 1.3860 2026/5/3 1.3860 1.3860 2026/5/4 1.3860 1.3860 2026/5/5 1.3860 1.3860 2026/5/6 1.5640 1.5640 2026/5/7 1.6581 1.6581 2026/5/8 1.7008 1.7008 2026/5/9 1.7008 1.7008 2026/5/10 1.7008 1.7008 2026/5/11 1.8202 1.8202 2026/5/12 1.8536 1.8536 2026/5/13 1.9544 1.9544 2026/5/14 1.9020 1.9020 2026/5/15 1.7750 1.7750 2026/5/16 1.7750 1.7750 2026/5/17 1.7750 1.7750 2026/5/18 1.7627 1.7627 2026/5/19 1.7448 1.7448 2026/5/20 1.7470 1.7470 2026/5/21 1.7141 1.7141 2026/5/22 1.8009 1.8009 2026/5/23 1.8009 1.8009 2026/5/24 1.8009 1.8009 2026/5/25 1.8444 1.8444 2026/5/26 1.8923 1.8923 2026/5/27 1.9985 1.9985 2026/5/28 2.0738 2.0738 2026/5/29 2.0292 2.0292 2026/5/30 2.0292 2.0292 2026/5/31 2.0292 2.0292 2026/6/1 2.0026 2.0026 2026/6/2 2.0010 2.0010 2026/6/3 2.0149 2.0149 2026/6/4 2.0355 2.0355 2026/6/5 1.8362 1.8362 2026/6/6 1.8362 1.8362 2026/6/7 1.8362 1.8362 2026/6/8 1.7505 1.7505 2026/6/9 1.8973 1.8973 2026/6/10 1.7938 1.7938 2026/6/11 1.8920 1.8920 2026/6/12 1.8520 1.8520 2026/6/13 1.8520 1.8520 2026/6/14 1.8520 1.8520 2026/6/15 2.0506 2.0506 2026/6/16 2.0812 2.0812 2026/6/17 2.2198 2.2198 2026/6/18 2.3938 2.3938 2026/6/19 2.3938 2.3938 2026/6/20 2.3938 2.3938 2026/6/21 2.3938 2.3938 2026/6/22 2.6737 2.6737 2026/6/23 2.3590 2.3590 2026/6/24 2.4849 2.4849 2026/6/25 2.7376 2.7376""" # 读取文本数据 df = pd.read_csv(StringIO(data_text), sep="\t") # 转换日期格式 df["净值日期"] = pd.to_datetime(df["净值日期"]) # ---------------------- 绘图配置 ---------------------- plt.rcParams["font.family"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False # 加宽画布容纳更多日期 fig, ax = plt.subplots(figsize=(16, 8), dpi=120) # 单位净值灰色线,累计净值红色线 ax.plot(df["净值日期"], df["单位净值"], color="#707070", linewidth=2, label="单位净值") ax.plot(df["净值日期"], df["累计净值"], color="#D82020", linewidth=2.2, label="累计净值") # Y轴范围 ax.set_ylim(0.5, 2.8) # 横向网格 ax.grid(axis="y", color="#dddddd", linestyle="-") # ========== 核心修改:增加日期刻度密度 ========== # 主刻度:每10天显示 ax.xaxis.set_major_locator(mdates.DayLocator(interval=10)) # 次刻度:每5天显示(不标注文字,仅短刻度线) ax.xaxis.set_minor_locator(mdates.DayLocator(interval=5)) # 日期格式:月/日 ax.xaxis.set_major_formatter(mdates.DateFormatter("%m/%d")) # 缩小字体、加大旋转避免重叠 plt.xticks(rotation=70, ha="right", fontsize=8) # 手动指定所有X轴刻度日期 import matplotlib.dates as mdates from datetime import datetime xtick_dates = [ datetime(2025,12,29), datetime(2026,1,8), datetime(2026,1,18), datetime(2026,1,28), datetime(2026,2,7), datetime(2026,2,17), datetime(2026,2,27), datetime(2026,3,9), datetime(2026,3,19), datetime(2026,3,29), datetime(2026,4,8), datetime(2026,4,18), datetime(2026,4,28), datetime(2026,5,8), datetime(2026,5,18), datetime(2026,5,28), datetime(2026,6,7), datetime(2026,6,17) ] # 绑定刻度与格式 ax.set_xticks(xtick_dates) ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y年%m月%d日")) plt.xticks(rotation=65, ha="right", fontsize=9) # 图例 ax.legend(loc="upper left", frameon=False, fontsize=11) # 隐藏上边、右边边框 ax.spines["top"].set_visible(False) ax.spines["right"].set_visible(False) ax.set_xlabel("净值日期", fontsize=12) ax.set_ylabel("净值", fontsize=12) ax.set_title("", fontsize=14, pad=15) plt.tight_layout() # 保存图片 plt.savefig("基金净值走势图_多日期.png") plt.show()
http://www.jsqmd.com/news/1093102/

相关文章:

  • 独立开发者怎么赚钱?源码销售、SaaS订阅、商业授权,我各试了一遍
  • SpiderFoot实战指南:自动化OSINT与攻击面管理
  • MSPM0 H-Series I2C模块深度解析:从控制器/目标模式到低功耗与DMA优化
  • 剑指offer-78、求平⽅根
  • 软件库存管理中的补货策略制定
  • 口碑好的抗衰项目直销厂商
  • ROS话题通信实战:从原理到完整实现
  • 无法强制安装 pyinstaller-hooks-contrib
  • Agent编排的核心挑战指令与内容分离剪贴板法则的实践与思考
  • TAS5711数字音频放大器:从I2S到PWM的完整开发指南
  • 深入解析MSPM0 L系列SYSCTL_TYPEB寄存器:中断、时钟与电源管理实战
  • LeetCode 3296.移山所需的最少秒数
  • 销售预测化技术中的趋势分析季节性调整与预测模型
  • 实战ModSecurity WAF:从DVWA靶场到自定义SQL注入防御规则
  • 排查48小时找不到根因的电力网络瘫痪 真凶竟是每秒2万个不起眼的小包
  • 金九银十真的适合跳槽吗?冷静分析求职黄金期的另一面
  • 深入解析TSB83AA23芯片:总线仲裁、PCI配置与驱动开发实战
  • go 数字人Coze智能体
  • 一张 AI 证书是否可信,课程、考试和查询机制都要看
  • HireMind:从 0 到 1,用 LangGraph 打造 7 Agent 协作的智能招聘平台
  • GPU中专业术语
  • Visual C++运行库终极修复方案:5分钟彻底解决Windows软件启动问题的完整指南
  • With 注入通用属性
  • 动画角色机器人化:从《冰雪奇缘》Olaf看强化学习与机械设计创新
  • 基于复合粒子群优化的模糊神经预测控制的研究附Matlab代码
  • go-sqlmock
  • AI数字人平台热门十三问|必火AI数字人全维度专业解答
  • 如何高效优化电子书阅读体验:Kindle Comic Converter的完整漫画转换方案
  • 卡梅德生物技术快报|羊驼纳米抗体文库筛选实操全流程:天然 / 合成文库构建与淘选参数汇总
  • Windows虚拟显示器终极指南:Parsec VDD免费开源解决方案