Table with multi-line strings in Altair

45 Views Asked by At

I was trying to write a table with some entries being multi-line using altair, but seem to get into trouble with fixing line spacing. For example:

text_df = pd.DataFrame({"a":["very very very very long thing", "very very very very very long thing"]})
text_chart_base = alt.Chart(text_df).transform_window(row_number="row_number()").transform_calculate(
    y=f"split(datum.a, ' ')"
    ).mark_text(align="left", baseline="top"
    ).encode(y=alt.Y("row_number:N", axis=None, scale=alt.Scale(reverse=True)))
col1 = text_chart_base.encode(text=f"y:N")
col2= text_chart_base.encode(text=f"row_number:N")
col1 | col2

gives me overlapping multi-line strings

enter image description here

Instead when I make the row_number Quantitative with encode(y=alt.Y("row_number:Q", axis=None, scale=alt.Scale(reverse=True))), I get too much space between the strings

enter image description here

Is there a way I can get mark_text to give the right row spacing between rows? (That is, an output something like the following)

enter image description here

0

There are 0 best solutions below