def test_element_zformatter_instance(self): formatter = PercentFormatter() curve = Scatter3D([]).options(zformatter=formatter) plot = mpl_renderer.get_plot(curve) zaxis = plot.handles['axis'].zaxis zformatter = zaxis.get_major_formatter() self.assertIs(zformatter, formatter)
def test_element_zformatter_string(self): curve = Scatter3D([]).options(zformatter='%d') plot = mpl_renderer.get_plot(curve) zaxis = plot.handles['axis'].zaxis zformatter = zaxis.get_major_formatter() self.assertIsInstance(zformatter, FormatStrFormatter) self.assertEqual(zformatter.fmt, '%d')
def test_element_zformatter_function(self): def formatter(value): return str(value) + ' %' curve = Scatter3D([]).options(zformatter=formatter) plot = mpl_renderer.get_plot(curve) zaxis = plot.handles['axis'].zaxis zformatter = zaxis.get_major_formatter() self.assertIsInstance(zformatter, FuncFormatter)
def test_scatter3d_state(self): scatter = Scatter3D(([0, 1], [2, 3], [4, 5])) state = self._get_plot_state(scatter) self.assertEqual(state['data'][0]['x'], np.array([0, 1])) self.assertEqual(state['data'][0]['y'], np.array([2, 3])) self.assertEqual(state['data'][0]['z'], np.array([4, 5])) self.assertEqual(state['layout']['scene']['xaxis']['range'], [0, 1]) self.assertEqual(state['layout']['scene']['yaxis']['range'], [2, 3]) self.assertEqual(state['layout']['scene']['zaxis']['range'], [4, 5])
def test_element_plot_zticks_items(self): scatter = Scatter3D([ (0, 1, 10), (1, 2, 100), (2, 3, 1000) ]).options(zticks=[(0, 'A'), (500, 'B'), (1000, 'C')]) state = self._get_plot_state(scatter) self.assertEqual(state['layout']['scene']['zaxis']['tickvals'], (0, 500, 1000)) self.assertEqual(state['layout']['scene']['zaxis']['ticktext'], ['A', 'B', 'C'])
def test_element_plot3d_padding(self): scatter = Scatter3D([(0, 1, 2), (1, 2, 3), (2, 3, 5)]).options(padding=0.1) state = self._get_plot_state(scatter) self.assertEqual(state['layout']['scene']['xaxis']['range'], [-0.2, 2.2]) self.assertEqual(state['layout']['scene']['yaxis']['range'], [0.8, 3.2]) self.assertEqual(state['layout']['scene']['zaxis']['range'], [1.7, 5.3])
def test_scatter3d_padding_logz(self): scatter3d = Scatter3D([(0, 1, 2), (1, 2, 3), (2, 3, 4)]).options(padding=0.1, logz=True) plot = mpl_renderer.get_plot(scatter3d) x_range, y_range = plot.handles['axis'].get_xlim( ), plot.handles['axis'].get_ylim() z_range = plot.handles['axis'].get_zlim() self.assertEqual(x_range[0], -0.2) self.assertEqual(x_range[1], 2.2) self.assertEqual(y_range[0], 0.8) self.assertEqual(y_range[1], 3.2) self.assertEqual(z_range[0], 1.8660659830736146) self.assertEqual(z_range[1], 4.2870938501451725)
def test_scatter3d_padding_nonsquare(self): scatter3d = Scatter3D([(0, 1, 2), (1, 2, 3), (2, 3, 4)]).options(padding=0.1, aspect=2) plot = mpl_renderer.get_plot(scatter3d) x_range, y_range = plot.handles['axis'].get_xlim( ), plot.handles['axis'].get_ylim() z_range = plot.handles['axis'].get_zlim() self.assertEqual(x_range[0], -0.1) self.assertEqual(x_range[1], 2.1) self.assertEqual(y_range[0], 0.8) self.assertEqual(y_range[1], 3.2) self.assertEqual(z_range[0], 1.8) self.assertEqual(z_range[1], 4.2)
def test_scatter3d_padding_hard_zrange(self): scatter3d = Scatter3D([(0, 1, 2), (1, 2, 3), (2, 3, 4) ]).redim.range(z=(0, 3)).options(padding=0.1) plot = mpl_renderer.get_plot(scatter3d) x_range, y_range = plot.handles['axis'].get_xlim( ), plot.handles['axis'].get_ylim() z_range = plot.handles['axis'].get_zlim() self.assertEqual(x_range[0], -0.2) self.assertEqual(x_range[1], 2.2) self.assertEqual(y_range[0], 0.8) self.assertEqual(y_range[1], 3.2) self.assertEqual(z_range[0], 0) self.assertEqual(z_range[1], 3)
def test_curve_padding_square_per_axis(self): curve = Scatter3D([ (0, 1, 2), (1, 2, 3), (2, 3, 4) ]).options(padding=((0, 0.1), (0.1, 0.2), (0.2, 0.3))) plot = mpl_renderer.get_plot(curve) x_range, y_range = plot.handles['axis'].get_xlim( ), plot.handles['axis'].get_ylim() z_range = plot.handles['axis'].get_zlim() self.assertEqual(x_range[0], 0) self.assertEqual(x_range[1], 2.2) self.assertEqual(y_range[0], 0.8) self.assertEqual(y_range[1], 3.4) self.assertEqual(z_range[0], 1.6) self.assertEqual(z_range[1], 4.6)
def test_element_plot_zlim(self): scatter = Scatter3D([(10, 1, 2), (100, 2, 3), (1000, 3, 5)]).options(zlim=(1, 6)) state = self._get_plot_state(scatter) self.assertEqual(state['layout']['scene']['zaxis']['range'], [1, 6])
def test_visible(self): element = Scatter3D(([0, 1], [2, 3], [4, 5])).options(visible=False) state = self._get_plot_state(element) self.assertEqual(state['data'][0]['visible'], False)
def test_scatter3d_size(self): scatter = Scatter3D(([0, 1], [2, 3], [4, 5])).options(size='y') state = self._get_plot_state(scatter) self.assertEqual(state['data'][0]['marker']['size'], np.array([2, 3]))
def test_scatter3d_color_mapped(self): scatter = Scatter3D(([0, 1], [2, 3], [4, 5])).options(color='y') state = self._get_plot_state(scatter) self.assertEqual(state['data'][0]['marker']['color'], np.array([2, 3])) self.assertEqual(state['data'][0]['marker']['cmin'], 2) self.assertEqual(state['data'][0]['marker']['cmax'], 3)
def test_element_plot_zpadding(self): scatter = Scatter3D([(10, 1, 2), (100, 2, 3), (1000, 3, 5)]).options(padding=(0, 0, 0.1)) state = self._get_plot_state(scatter) self.assertEqual(state['layout']['scene']['zaxis']['range'], [1.7, 5.3])
def test_element_plot_zrange(self): scatter = Scatter3D([(10, 1, 2), (100, 2, 3), (1000, 3, 5)]) state = self._get_plot_state(scatter) self.assertEqual(state['layout']['scene']['zaxis']['range'], [2, 5])
def test_element_plot_zlabel(self): scatter = Scatter3D([(10, 1, 2), (100, 2, 3), (1000, 3, 5)]).options(zlabel='Z-Axis') state = self._get_plot_state(scatter) self.assertEqual(state['layout']['scene']['zaxis']['title'], 'Z-Axis')
def test_overlay_plot_logz(self): scatter = (Scatter3D([(0, 1, 10), (1, 2, 100), (2, 3, 1000)]) * Path3D([])).options(logz=True) state = self._get_plot_state(scatter) self.assertEqual(state['layout']['scene']['zaxis']['type'], 'log')
def test_element_plot_zticks_values(self): scatter = Scatter3D([(0, 1, 10), (1, 2, 100), (2, 3, 1000)]).options(zticks=[0, 500, 1000]) state = self._get_plot_state(scatter) self.assertEqual(state['layout']['scene']['zaxis']['tickvals'], [0, 500, 1000])
def test_element_plot_invert_zaxis(self): scatter = Scatter3D([(10, 1, 2), (100, 2, 3), (1000, 3, 5)]).options(invert_zaxis=True) state = self._get_plot_state(scatter) self.assertEqual(state['layout']['scene']['zaxis']['range'], [5, 2])
def test_scatter3d_colorbar_label(self): scatter3d = Scatter3D([(0, 1, 2), (1, 2, 3), (2, 3, 4)]).options(color='z', colorbar=True) plot = mpl_renderer.get_plot(scatter3d) assert plot.handles['cax'].get_ylabel() == 'z'