You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python的QuantStats库生成SVG格式图表?

让QuantStats生成SVG格式报告文件

1. 实现方式概述

QuantStats的reports.full()本质是调用绘图模块生成各类图表后保存为文件,默认输出PNG格式。要生成SVG,核心是把图表的保存格式从png改成svg——SVG是matplotlib原生支持的矢量图格式,无需额外依赖,只要调整保存时的格式参数即可。

2. 需要修改的库文件及代码

主要修改两个核心文件:

(1)quantstats/reports.py

找到full()函数,给它新增一个fmt参数用来指定输出格式,再把这个参数传递给所有绘图函数的保存路径中,替换原来固定的.png后缀:

  • 第一步:修改full()函数定义,新增fmt参数(默认保留png兼容原有逻辑)
def full(returns, benchmark=None, rf=0.0, grayscale=False,
         figsize=(10, 6), title=None, output='.', compounded=True,
         periods_per_year=None, prepare_returns=True, live_start_date=None,
         fmt='png'):  # 新增fmt参数
  • 第二步:把函数内所有带savefig参数的绘图调用,将文件名后缀替换为{fmt},比如:
# 原代码
plotting.drawdowns_periods(returns, benchmark=benchmark, grayscale=grayscale,
                           figsize=figsize, savefig=f"{output}/drawdowns_periods.png")
# 修改后
plotting.drawdowns_periods(returns, benchmark=benchmark, grayscale=grayscale,
                           figsize=figsize, savefig=f"{output}/drawdowns_periods.{fmt}")

把所有类似的savefig路径都做同样替换。

(2)quantstats/plotting.py

检查绘图函数中的plt.savefig()调用,如果有硬编码format="png"的情况,直接去掉该参数——matplotlib会根据文件名后缀自动识别输出格式,只要文件名是.svg,就会保存为SVG格式:

# 原代码
plt.savefig(savefig, dpi=150, bbox_inches='tight', format="png")
# 修改后
plt.savefig(savefig, dpi=150, bbox_inches='tight')

3. 修改示例代码调用

修改库文件后,直接在调用qs.reports.full()时指定fmt='svg'参数即可:

import quantstats as qs

stock1 = qs.utils.download_returns('XLE', period="1y")
stock2 = qs.utils.download_returns('SPY' , period="1y")

# 指定输出格式为SVG,生成的所有图表均为SVG格式
qs.reports.full(stock1, stock2, fmt='svg')

内容的提问来源于stack exchange,提问作者Bala Krishna Mamidi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:21:28