55import pickle
66import copy
77
8+ from plotly .subplots import make_subplots
89from plotly_resampler import FigureResampler , FigureWidgetResampler
910from plotly_resampler .registering import (
1011 register_plotly_resampler ,
@@ -45,6 +46,42 @@ def test_pickle_figure_resampler(pickle_figure):
4546 assert len (hf_trace ["y" ]) == nb_samples
4647 assert np .all (hf_trace ["y" ] == np .arange (nb_samples ))
4748
49+ # Test for figure with subplots (check non-pickled private properties)
50+ fig = FigureResampler (
51+ make_subplots (rows = 2 , cols = 1 , shared_xaxes = True ),
52+ default_n_shown_samples = 50 , show_dash_kwargs = dict (port = 8051 ),
53+ )
54+ for i in range (nb_traces ):
55+ fig .add_trace (
56+ go .Scattergl (name = f"trace--{ i } " ), hf_y = np .arange (nb_samples ),
57+ row = (i % 2 ) + 1 , col = 1 ,
58+ )
59+ assert fig ._global_n_shown_samples == 50
60+ assert fig ._show_dash_kwargs ["port" ] == 8051
61+ assert fig ._figure_class == go .Figure
62+ assert fig ._xaxis_list == ['xaxis' , 'xaxis2' ]
63+ assert fig ._yaxis_list == ['yaxis' , 'yaxis2' ]
64+
65+ pickle .dump (fig , open (pickle_figure , "wb" ))
66+ fig_pickle = pickle .load (open (pickle_figure , "rb" ))
67+
68+ assert isinstance (fig_pickle , FigureResampler )
69+ assert fig_pickle ._global_n_shown_samples == 50
70+ assert fig_pickle ._show_dash_kwargs ["port" ] == 8051
71+ assert fig_pickle ._figure_class == go .Figure
72+ assert fig_pickle ._xaxis_list == ['xaxis' , 'xaxis2' ]
73+ assert fig_pickle ._yaxis_list == ['yaxis' , 'yaxis2' ]
74+ assert len (fig_pickle .data ) == nb_traces
75+ assert len (fig_pickle .hf_data ) == nb_traces
76+ for i in range (nb_traces ):
77+ trace = fig_pickle .data [i ]
78+ assert isinstance (trace , go .Scattergl )
79+ assert len (trace .y ) == 50
80+ assert f"trace--{ i } " in trace .name
81+ hf_trace = fig_pickle .hf_data [i ]
82+ assert len (hf_trace ["y" ]) == nb_samples
83+ assert np .all (hf_trace ["y" ] == np .arange (nb_samples ))
84+
4885
4986def test_pickle_figurewidget_resampler (pickle_figure ):
5087 nb_traces = 2
@@ -69,6 +106,40 @@ def test_pickle_figurewidget_resampler(pickle_figure):
69106 assert len (hf_trace ["y" ]) == nb_samples
70107 assert np .all (hf_trace ["y" ] == np .arange (nb_samples ))
71108
109+ # Test for figure with subplots (check non-pickled private properties)
110+ fig = FigureWidgetResampler (
111+ make_subplots (rows = 2 , cols = 1 , shared_xaxes = True ),
112+ default_n_shown_samples = 50 ,
113+ )
114+ for i in range (nb_traces ):
115+ fig .add_trace (
116+ go .Scattergl (name = f"trace--{ i } " ), hf_y = np .arange (nb_samples ),
117+ row = (i % 2 ) + 1 , col = 1 ,
118+ )
119+ assert fig ._global_n_shown_samples == 50
120+ assert fig ._figure_class == go .FigureWidget
121+ assert fig ._xaxis_list == ['xaxis' , 'xaxis2' ]
122+ assert fig ._yaxis_list == ['yaxis' , 'yaxis2' ]
123+
124+ pickle .dump (fig , open (pickle_figure , "wb" ))
125+ fig_pickle = pickle .load (open (pickle_figure , "rb" ))
126+
127+ assert isinstance (fig_pickle , FigureWidgetResampler )
128+ assert fig_pickle ._global_n_shown_samples == 50
129+ assert fig_pickle ._figure_class == go .FigureWidget
130+ assert fig_pickle ._xaxis_list == ['xaxis' , 'xaxis2' ]
131+ assert fig_pickle ._yaxis_list == ['yaxis' , 'yaxis2' ]
132+ assert len (fig_pickle .data ) == nb_traces
133+ assert len (fig_pickle .hf_data ) == nb_traces
134+ for i in range (nb_traces ):
135+ trace = fig_pickle .data [i ]
136+ assert isinstance (trace , go .Scattergl )
137+ assert len (trace .y ) == 50
138+ assert f"trace--{ i } " in trace .name
139+ hf_trace = fig_pickle .hf_data [i ]
140+ assert len (hf_trace ["y" ]) == nb_samples
141+ assert np .all (hf_trace ["y" ] == np .arange (nb_samples ))
142+
72143
73144## Test pickling when registered
74145
0 commit comments