python - matplotlib 财务自定义 y/x 轴
问题描述
最终目标:
我正在构建一个图表,我想在其中有一个无花果:
- 烛台在顶部,带有自定义 y 轴(例如,底部值设置为低于最小值),带有完整网格
- 中间面板中的指标图,带有自定义 x/y 轴(y 上的某些值),带有最后一个值的 bbox
- 底部面板中的一些字符串和 int 表格数据
仅使用 mpf 时的一般问题:
- mpf 绘制的数据在 x 轴上默认采用一些“随机”日期值,我希望它们在每个季度的第一天设置
- mpf 绘制的指标默认采用适用于数据集中值范围的 y 轴值,我希望它们在指标范围内统一(如果 RSI 硬编码为 0-100)
- mpf 似乎共享 x 轴,这意味着我不能放置带有非图形数据的附加面板(例如带有某些指标值的表)
所以我将 mpf 与标准 mpl 混合并尝试了这个:
fig = mpf.figure(style = 'yahoo', figsize = (9,8))
ax1 = plt.subplot2grid( shape = (9,8), loc = (0,0), rowspan = 5, colspan = 8)
ax2 = plt.subplot2grid( shape = (9,8), loc = (5,0), rowspan = 2, colspan = 8)
ax2.set_ylim(bottom = 0)
ax2.set_yticks([0,20,30,40,50,60,70,80,100])
ax1.set_xticks(np.arange(start = np.datetime64('1999-01'), stop = '2021-04', step = 3, dtype = 'datetime64[M]'))
ax1.grid(True, axis ='x')
ax2 = plt.plot(market_data.tail(200).index, market_data['smoothedRSI'].tail(200))
mpf.plot(market_data.tail(200), type = 'candle', ax = ax1)
但似乎它在创建新问题时解决了一些问题(指标面板按预期工作)
这段代码的问题:
- 随机日期变成月初(以 yyyy-mm 格式),但每个月而不是每个月绘制一次
- 两个图表在左右都有空填充,并且tight_layout = True,仅适用于 mpf 图表
- mpf 图表上的网格是水平的而不是垂直的(ax1.grid() 只能用 False, 'both' 禁用它)
- ax1.set_ticks() 显示 ax2 而不是 ax1 的刻度
如何访问这些选项?我可以在基本的 matplotlib 中解决它,但遇到了 mpf 的死胡同。
解决方案
推荐阅读
- javascript - 在 .npmrc 中配置多个注册表
- excel - 引用 Excel 函数中的最后一个工作表以在多个工作表中求和相同的范围
- sql-server - 如何用另一个表列中的文本替换()同一极中的多个@var?
- python-3.x - 如何自动刷新 GUI
- laravel - 如何在 Laravel 中验证数组中的对唯一性?
- asp.net - OWIN OpenId Connect 身份验证和基于角色的授权
- nao-robot - Nao Text-To-Speech on Choregraphe
- python - Python Flask 不导入任何模块
- vue.js - 将卡片中的文本与图像的右下角对齐
- json - Rust Serde - 是否可以将可能在两种不同布局中的 json 数据映射回单个结构?