1515from lux .vislib .altair .AltairChart import AltairChart
1616import altair as alt
1717import lux
18+ import math
1819
1920alt .data_transformers .disable_max_rows ()
2021from lux .utils .utils import get_agg_title
@@ -41,17 +42,22 @@ def initialize_chart(self):
4142 x_attr = self .vis .get_attr_by_channel ("x" )[0 ]
4243 y_attr = self .vis .get_attr_by_channel ("y" )[0 ]
4344
45+ # Deal with overlong string axes labels
4446 x_attr_abv = str (x_attr .attribute )
4547 y_attr_abv = str (y_attr .attribute )
48+ label_len = lux .config .label_len
49+ prefix_len = math .ceil (3.0 * label_len / 5.0 )
50+ suffix_len = label_len - prefix_len
51+ if len (x_attr_abv ) > label_len :
52+ x_attr_abv = x_attr .attribute [:prefix_len ] + "..." + x_attr .attribute [- suffix_len :]
53+ if len (y_attr_abv ) > label_len :
54+ y_attr_abv = y_attr .attribute [:prefix_len ] + "..." + y_attr .attribute [- suffix_len :]
4655
47- if len (x_attr_abv ) > 25 :
48- x_attr_abv = x_attr .attribute [:15 ] + "..." + x_attr .attribute [- 10 :]
49- if len (y_attr_abv ) > 25 :
50- y_attr_abv = y_attr .attribute [:15 ] + "..." + y_attr .attribute [- 10 :]
5156 if isinstance (x_attr .attribute , str ):
5257 x_attr .attribute = x_attr .attribute .replace ("." , "" )
5358 if isinstance (y_attr .attribute , str ):
5459 y_attr .attribute = y_attr .attribute .replace ("." , "" )
60+
5561 # To get datetime to display correctly on bar charts
5662 if x_attr .data_type == "temporal" :
5763 x_attr .data_type = "nominal"
@@ -99,7 +105,8 @@ def initialize_chart(self):
99105 if x_attr .sort == "ascending" :
100106 x_attr_field .sort = "-y"
101107 x_attr_field_code = f"alt.X('{ x_attr .attribute } ', type= '{ x_attr .data_type } ', axis=alt.Axis(labelOverlap=True, title='{ x_attr_abv } '),sort='-y')"
102- k = 10
108+
109+ k = lux .config .number_of_bars
103110 self ._topkcode = ""
104111 n_bars = len (self .data .iloc [:, 0 ].unique ())
105112 plotting_scale = lux .config .plotting_scale
0 commit comments