如何用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
相关产品推荐
相关产品推荐

