将轴标题置于两个串联 Altair 图之间的中心

问题描述 投票:0回答:1

我有一个 Altair 图,它是子图的垂直串联。然而,它们共享 y 轴title,我想将其放在两个图的中间。

例如,假设我有这个:

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 轴标签的位置:

.

我也希望从每个子图中删除 y 轴标签,但我认为这更容易做到。

我该如何实现这个?

python charts visualization altair vega
1个回答
2
投票

仅供参考,您仍然可以进行分面并拥有独立的尺度。在这种情况下,分面比将图表连接在一起更容易。即

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',
)

© www.soinside.com 2019 - 2024. All rights reserved.