Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Shared axis labels with independent scale

When facet/concat-ing charts, I would like the axis labels to be shared (so only 1 label per column/row, here: Horsepower), but the scale to be independent. Is this possible?

I thought a combination of resolve_axis and resolve_scale would be the way to go, as the title is a part of Axis, but I didn't get it to work.

I'm also wondering what resolve_axis actually does different than resolve_scale, anyone has an example?

base = alt.Chart(source).mark_circle().encode(
    x=alt.X('Horsepower:Q',),
    y=alt.Y('Miles_per_Gallon:Q'),
    color='Origin:N',
    row=alt.Row('Origin:N'),
).properties(
    width=200, height=100
)

base.resolve_axis(
    x='shared' # doesn't do anything obvious
).resolve_scale(
    x='independent'
)

Open the Chart in the Vega Editor

plot

like image 983
debbes Avatar asked Dec 01 '25 20:12

debbes


1 Answers

I found a hacky way to do this, by misusing the facet header:

base = alt.Chart(source).mark_circle(size=60).encode(
    x=alt.X('Horsepower:Q',),
    y=alt.Y('Miles_per_Gallon:Q',
           axis=alt.Axis(title=''),),
    color='Origin:N',
    column=alt.Column('Origin:N', header=alt.Header(title='Miles_per_Gallon')),
).properties(
    width=200, height=200
).configure_header(
    labelExpr="['Origin',datum.value]",
    titleOrient='left'
)
display(base.resolve_scale(y='shared'))
display(base.resolve_scale(y='independent'))

plot1 plot2

like image 109
debbes Avatar answered Dec 04 '25 00:12

debbes



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!