Skip to content

Commit f1b0f5a

Browse files
committed
Violin Plot: Tick orientation
1 parent debbab9 commit f1b0f5a

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

Orange/widgets/visualize/owviolinplot.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,13 @@ def mouseClickEvent(self, ev):
6666

6767

6868
class ParameterSetter(CommonParameterSetter):
69+
BOTTOM_AXIS_LABEL, IS_VERTICAL_LABEL = "Bottom axis", "Vertical tick text"
70+
6971
def __init__(self, master):
7072
self.master: ViolinPlot = master
73+
self.titles_settings = {}
74+
self.ticks_settings = {}
75+
self.is_vertical_setting = False
7176
super().__init__()
7277

7378
def update_setters(self):
@@ -79,11 +84,15 @@ def update_ticks(**settings):
7984
self.ticks_settings.update(**settings)
8085
Updater.update_axes_ticks_font(self.axis_items, **settings)
8186

82-
self.titles_settings = {}
83-
self.ticks_settings = {}
87+
def update_bottom_axis(**settings):
88+
self.is_vertical_setting = settings[self.IS_VERTICAL_LABEL]
89+
self.bottom_axis.setRotateTicks(self.is_vertical_setting)
8490

8591
self._setters[self.LABELS_BOX][self.AXIS_TITLE_LABEL] = update_titles
8692
self._setters[self.LABELS_BOX][self.AXIS_TICKS_LABEL] = update_ticks
93+
self._setters[self.PLOT_BOX] = {
94+
self.BOTTOM_AXIS_LABEL: update_bottom_axis,
95+
}
8796

8897
self.initial_settings = {
8998
self.LABELS_BOX: {
@@ -95,17 +104,26 @@ def update_ticks(**settings):
95104
self.ANNOT_BOX: {
96105
self.TITLE_LABEL: {self.TITLE_LABEL: ("", "")},
97106
},
107+
self.PLOT_BOX: {
108+
self.BOTTOM_AXIS_LABEL: {
109+
self.IS_VERTICAL_LABEL: (None, self.is_vertical_setting),
110+
},
111+
},
98112
}
99113

100114
@property
101115
def title_item(self) -> pg.LabelItem:
102116
return self.master.getPlotItem().titleLabel
103117

104118
@property
105-
def axis_items(self) -> List[pg.AxisItem]:
119+
def axis_items(self) -> List[AxisItem]:
106120
return [value["item"] for value in
107121
self.master.getPlotItem().axes.values()]
108122

123+
@property
124+
def bottom_axis(self) -> AxisItem:
125+
return self.master.getAxis("bottom")
126+
109127

110128
def fit_kernel(data: np.ndarray, kernel: str) -> \
111129
Tuple[Optional[KernelDensity], float]:
@@ -632,6 +650,9 @@ def _clear_axes(self):
632650
self.parameter_setter.axis_items,
633651
**self.parameter_setter.ticks_settings
634652
)
653+
self.getAxis("bottom").setRotateTicks(
654+
self.parameter_setter.is_vertical_setting
655+
)
635656

636657
def _clear_selection(self):
637658
self.__selection = set()

Orange/widgets/visualize/tests/test_owviolinplot.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,10 @@ def test_settings():
328328
)
329329
self.assertEqual(graph.parameter_setter.title_item.text, "Foo")
330330

331+
self.assertTrue(
332+
graph.parameter_setter.bottom_axis.style["rotateTicks"]
333+
)
334+
331335
self.send_signal(self.widget.Inputs.data, self.data)
332336
key, value = ("Fonts", "Font family", "Font family"), "Helvetica"
333337
self.widget.set_visual_settings(key, value)
@@ -350,6 +354,9 @@ def test_settings():
350354
key, value = ("Annotations", "Title", "Title"), "Foo"
351355
self.widget.set_visual_settings(key, value)
352356

357+
key, value = ("Figure", "Bottom axis", "Vertical tick text"), True
358+
self.widget.set_visual_settings(key, value)
359+
353360
self.send_signal(self.widget.Inputs.data, self.data)
354361
test_settings()
355362

0 commit comments

Comments
 (0)