Open
Conversation
- Define FigureProtocol with Capability flags for backend-neutral plotting - Add plot_line, plot_markers, plot_area, plot_ohlc, plot_histogram, plot_bars, plot_hline, and plot_zone methods to FigureMixin - Implement backend registry (register_backend, get_backend, list_backends) with Plotly registered as the default built-in backend - Add create_figure() factory that routes through the registry and respects settings['plotting']['default_backend'] - Add resolve_backend/resolve_backend_for_fig helpers for downstream migration of existing plot methods - Add assert_plotly_only_kwargs/assert_plotly_only_method guards for graceful non-Plotly backend error reporting - Expose new API surface on vbt.plotting.* and top-level vbt.* - Add default_backend='plotly' to plotting settings - Add comprehensive test suites for protocol conformance and backend registry
- Add hover_text sequence length validation in plot_markers to raise ValueError on mismatched lengths - Add plot_zone tests: minimal, color/opacity, None-param omission, subplot domain resolution - Add subplot column routing tests (1x2 and 2x2 layouts) to catch regressions that ignore the col dimension - Add use_widgets_setting fixture to parametrize subplot tests over both Figure and FigureWidget - Add create_figure tests for rows-only, cols-only, and figure= kwarg routing through make_subplots - Add backend registry tests for kwarg forwarding and unregistered default backend error handling - Add to_html protocol conformance test - Add None-param omission tests for plot_histogram and plot_area - Fix test_unknown_backend_raises_keyerror to assert correct key name - Compare add_hline compat test against go.Figure reference instead of hardcoded Plotly internals
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
As progress towards #815, this PR introduces a new
Protocol,FigureProtocol, which lays out the contract that any plotting backend should fulfill.In this PR I have focused on creating the protocol itself as well as adding
PlotlyFigureProtocolMixin, which implements theFigureProtocolfor plotly specifically. This is purely additive, no user facing changes.We also setup the machinery for plugging in new backends later with a registry.
Next steps would be migrating internal callers to use the protocol as opposed to direct plotly calls where possible, which will help refine the design of the protocol before adding lightweight charts support
As always let me know any suggestions or if a different direction would be preferred.