Skip to content

Commit 982ea9a

Browse files
Add parameter to specify orient of vertical bar chart y axis as either "left" or "right"
commit 1d2b1fe Author: Edmund Miller <git@edmundmiller.dev> Date: Sun Jun 22 12:09:54 2025 -0500 test(#9): Test left and right commit a19b457 Author: Caleb Lindgren <calebmlindgren@gmail.com> Date: Fri May 2 12:42:58 2025 -0400 Add parameter to specify orient of vertical bar chart y axis as either "left" or "right" Co-authored-by: Caleb Lindgren <calebmlindgren@gmail.com>
1 parent d75097a commit 982ea9a

8 files changed

Lines changed: 256 additions & 186 deletions

altair_upset/components.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ def create_vertical_bar(
1111
x_sort,
1212
tooltip,
1313
vertical_bar_label_size,
14+
vertical_bar_y_axis_orient,
1415
):
1516
"""Creates the vertical bar chart component."""
1617
vertical_bar = base.mark_bar(color=main_color, size=vertical_bar_size).encode(
@@ -22,7 +23,7 @@ def create_vertical_bar(
2223
),
2324
y=alt.Y(
2425
"max(count):Q",
25-
axis=alt.Axis(grid=False, tickCount=3, orient="right"),
26+
axis=alt.Axis(grid=False, tickCount=3, orient=vertical_bar_y_axis_orient),
2627
title="Intersection Size",
2728
),
2829
color=brush_color,

altair_upset/upset.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ def UpSetAltair(
8989
line_connection_size: int = 1, # Reduced from 2
9090
horizontal_bar_size: int = 20,
9191
vertical_bar_label_size: int = 16,
92+
vertical_bar_y_axis_orient: str = "right",
9293
theme: Optional[str] = None,
9394
) -> UpSetChart:
9495
"""Generate interactive UpSet plots using Altair. [Lex et al., 2014]_
@@ -140,6 +141,8 @@ def UpSetAltair(
140141
Height of horizontal bars in pixels.
141142
vertical_bar_label_size : int, default 16
142143
Font size of vertical bar labels.
144+
vertical_bar_y_axis_orient : str, default "right"
145+
Whether to show the vertical bar chart Y axis on the right or left of the plot.
143146
theme : str, optional
144147
Altair theme to use. If None, uses the current default theme.
145148
@@ -195,6 +198,8 @@ def UpSetAltair(
195198
raise ValueError("sort_order must be either 'ascending' or 'descending'")
196199
if abbre is not None and len(sets) != len(abbre):
197200
raise ValueError("if provided, abbre must have the same length as sets")
201+
if vertical_bar_y_axis_orient not in ["left", "right"]:
202+
raise ValueError("vertical bar y axis orient must be 'left' or 'right'")
198203

199204
# Apply theme if specified
200205
if theme is not None:
@@ -255,6 +260,7 @@ def UpSetAltair(
255260
x_sort,
256261
tooltip,
257262
vertical_bar_label_size,
263+
vertical_bar_y_axis_orient,
258264
)
259265
vertical_bar_chart = (
260266
(vertical_bar + vertical_bar_text)

tests/__snapshots__/test_covid_mutations/test_covid_mutations[vega_spec].json

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,22 @@
3636
"params": [
3737
{
3838
"bind": "legend",
39-
"name": "param_17",
39+
"name": "param_23",
4040
"select": {
4141
"fields": [
4242
"set"
4343
],
4444
"type": "point"
4545
},
4646
"views": [
47-
"view_33",
48-
"view_34",
49-
"view_35",
50-
"view_36"
47+
"view_45",
48+
"view_46",
49+
"view_47",
50+
"view_48"
5151
]
5252
},
5353
{
54-
"name": "param_18",
54+
"name": "param_24",
5555
"select": {
5656
"fields": [
5757
"intersection_id"
@@ -60,8 +60,8 @@
6060
"type": "point"
6161
},
6262
"views": [
63-
"view_33",
64-
"view_34"
63+
"view_45",
64+
"view_46"
6565
]
6666
}
6767
],
@@ -142,7 +142,7 @@
142142
"size": 20,
143143
"type": "bar"
144144
},
145-
"name": "view_36",
145+
"name": "view_48",
146146
"transform": [
147147
{
148148
"aggregate": [
@@ -195,12 +195,12 @@
195195
},
196196
{
197197
"filter": {
198-
"param": "param_17"
198+
"param": "param_23"
199199
}
200200
},
201201
{
202202
"filter": {
203-
"param": "param_17"
203+
"param": "param_23"
204204
}
205205
},
206206
{
@@ -272,7 +272,7 @@
272272
"condition": {
273273
"test": {
274274
"not": {
275-
"param": "param_18"
275+
"param": "param_24"
276276
}
277277
},
278278
"value": "#3A3A3A"
@@ -323,7 +323,7 @@
323323
"size": 100,
324324
"type": "circle"
325325
},
326-
"name": "view_34",
326+
"name": "view_46",
327327
"transform": [
328328
{
329329
"aggregate": [
@@ -376,12 +376,12 @@
376376
},
377377
{
378378
"filter": {
379-
"param": "param_17"
379+
"param": "param_23"
380380
}
381381
},
382382
{
383383
"filter": {
384-
"param": "param_17"
384+
"param": "param_23"
385385
}
386386
},
387387
{
@@ -450,7 +450,7 @@
450450
"condition": {
451451
"test": {
452452
"not": {
453-
"param": "param_18"
453+
"param": "param_24"
454454
}
455455
},
456456
"value": "#3A3A3A"
@@ -553,12 +553,12 @@
553553
},
554554
{
555555
"filter": {
556-
"param": "param_17"
556+
"param": "param_23"
557557
}
558558
},
559559
{
560560
"filter": {
561-
"param": "param_17"
561+
"param": "param_23"
562562
}
563563
},
564564
{
@@ -627,7 +627,7 @@
627627
"condition": {
628628
"test": {
629629
"not": {
630-
"param": "param_18"
630+
"param": "param_24"
631631
}
632632
},
633633
"value": "#3A3A3A"
@@ -728,12 +728,12 @@
728728
},
729729
{
730730
"filter": {
731-
"param": "param_17"
731+
"param": "param_23"
732732
}
733733
},
734734
{
735735
"filter": {
736-
"param": "param_17"
736+
"param": "param_23"
737737
}
738738
},
739739
{
@@ -894,12 +894,12 @@
894894
},
895895
{
896896
"filter": {
897-
"param": "param_17"
897+
"param": "param_23"
898898
}
899899
},
900900
{
901901
"filter": {
902-
"param": "param_17"
902+
"param": "param_23"
903903
}
904904
},
905905
{
@@ -1061,12 +1061,12 @@
10611061
},
10621062
{
10631063
"filter": {
1064-
"param": "param_17"
1064+
"param": "param_23"
10651065
}
10661066
},
10671067
{
10681068
"filter": {
1069-
"param": "param_17"
1069+
"param": "param_23"
10701070
}
10711071
},
10721072
{
@@ -1186,7 +1186,7 @@
11861186
"size": 650,
11871187
"type": "circle"
11881188
},
1189-
"name": "view_35",
1189+
"name": "view_47",
11901190
"transform": [
11911191
{
11921192
"aggregate": [
@@ -1236,12 +1236,12 @@
12361236
},
12371237
{
12381238
"filter": {
1239-
"param": "param_17"
1239+
"param": "param_23"
12401240
}
12411241
},
12421242
{
12431243
"filter": {
1244-
"param": "param_17"
1244+
"param": "param_23"
12451245
}
12461246
},
12471247
{
@@ -1381,12 +1381,12 @@
13811381
},
13821382
{
13831383
"filter": {
1384-
"param": "param_17"
1384+
"param": "param_23"
13851385
}
13861386
},
13871387
{
13881388
"filter": {
1389-
"param": "param_17"
1389+
"param": "param_23"
13901390
}
13911391
},
13921392
{
@@ -1470,7 +1470,7 @@
14701470
"condition": {
14711471
"test": {
14721472
"not": {
1473-
"param": "param_18"
1473+
"param": "param_24"
14741474
}
14751475
},
14761476
"value": "#3A3A3A"
@@ -1576,12 +1576,12 @@
15761576
},
15771577
{
15781578
"filter": {
1579-
"param": "param_17"
1579+
"param": "param_23"
15801580
}
15811581
},
15821582
{
15831583
"filter": {
1584-
"param": "param_17"
1584+
"param": "param_23"
15851585
}
15861586
},
15871587
{
@@ -1650,7 +1650,7 @@
16501650
"condition": {
16511651
"test": {
16521652
"not": {
1653-
"param": "param_18"
1653+
"param": "param_24"
16541654
}
16551655
},
16561656
"value": "#3A3A3A"
@@ -1701,7 +1701,7 @@
17011701
"size": 30,
17021702
"type": "bar"
17031703
},
1704-
"name": "view_33",
1704+
"name": "view_45",
17051705
"transform": [
17061706
{
17071707
"aggregate": [
@@ -1751,12 +1751,12 @@
17511751
},
17521752
{
17531753
"filter": {
1754-
"param": "param_17"
1754+
"param": "param_23"
17551755
}
17561756
},
17571757
{
17581758
"filter": {
1759-
"param": "param_17"
1759+
"param": "param_23"
17601760
}
17611761
},
17621762
{

0 commit comments

Comments
 (0)