将两个串联的 Altair 图之间的轴标题居中
Centering the axis title between two concatenated Altair plots
我有一个 Altair 图,它是子图的垂直串联。但是,他们共享y-axis 标题,我想把它放在两个地块的中间。
例如,假设我有这个:
from sklearn.datasets import load_iris
import altair as alt
import pandas as pd
iris = load_iris()
_, y = load_iris(return_X_y = True)
df = pd.DataFrame(iris.data, columns=iris.feature_names).assign(label=y)
chart_a = alt.Chart(
df[df.label == 0]
).mark_point().encode(
x='sepal length (cm)',
y='sepal width (cm)',
)
chart_b = alt.Chart(
df[df.label == 1]
).mark_point().encode(
x='sepal length (cm)',
y='sepal width (cm)',
)
result = (chart_a & chart_b)
我在这里没有使用分面,因为在我的真实示例中,比例完全不同。我还注释了我希望共享 y-axis 标签的位置:
.
我也希望从每个子图中删除 y-axis 标签,但我认为这样做更容易。
我该如何实现?
仅供参考,您仍然可以刻面并拥有独立的比例尺。在这种情况下,分面比将图表连接在一起更容易。即
import altair as alt
from vega_datasets import data
iris = data.iris()
alt.Chart(iris).mark_point().encode(
alt.X('petalLength:Q'),
alt.Y('petalWidth:Q', axis=alt.Axis(title=''))
).properties(
width=180,
height=180
).facet(
row=alt.Row(field=alt.Field('species'),type='nominal',header=alt.Header( title='Sepal Width (cm)', labels=False, titleFontSize=25, titleColor='red'))
).resolve_scale(
y='independent',
x='independent',
)
我有一个 Altair 图,它是子图的垂直串联。但是,他们共享y-axis 标题,我想把它放在两个地块的中间。
例如,假设我有这个:
from sklearn.datasets import load_iris
import altair as alt
import pandas as pd
iris = load_iris()
_, y = load_iris(return_X_y = True)
df = pd.DataFrame(iris.data, columns=iris.feature_names).assign(label=y)
chart_a = alt.Chart(
df[df.label == 0]
).mark_point().encode(
x='sepal length (cm)',
y='sepal width (cm)',
)
chart_b = alt.Chart(
df[df.label == 1]
).mark_point().encode(
x='sepal length (cm)',
y='sepal width (cm)',
)
result = (chart_a & chart_b)
我在这里没有使用分面,因为在我的真实示例中,比例完全不同。我还注释了我希望共享 y-axis 标签的位置:
我也希望从每个子图中删除 y-axis 标签,但我认为这样做更容易。
我该如何实现?
仅供参考,您仍然可以刻面并拥有独立的比例尺。在这种情况下,分面比将图表连接在一起更容易。即
import altair as alt
from vega_datasets import data
iris = data.iris()
alt.Chart(iris).mark_point().encode(
alt.X('petalLength:Q'),
alt.Y('petalWidth:Q', axis=alt.Axis(title=''))
).properties(
width=180,
height=180
).facet(
row=alt.Row(field=alt.Field('species'),type='nominal',header=alt.Header( title='Sepal Width (cm)', labels=False, titleFontSize=25, titleColor='red'))
).resolve_scale(
y='independent',
x='independent',
)