Altair 散点图到条形图单个 select 行数据框

Altair scatter plot to bar chart single select row of data frame

Python 中 Altair 可视化库的新手问题。 我有一个 pandas 数据框,所有列都是数字,但一列是字符串标签(见下文)。我正在尝试构建交互式图表,将散点图单个 selection 绑定到条形图。条形图将显示其余数值,X 轴将是列名,Y 轴将是数值。所有示例都与聚合有关。如何在 Altair 中将其可视化?请参阅下面的代表性数据。标签值将用于 select 行。

Label Score 1 Score 2 Score 3
red 0.22 0.55. 0.44
blue 0.45 0.66. 0.33
green 0.45 0.66. 0.33
black 0.45 0.66. 0.33

我尝试做的类似于以下但没有聚合: https://altair-viz.github.io/gallery/scatter_with_layered_histogram.html

描述中提到的交互式散点图不清楚你想要显示什么,但我可以回答你关于条形图的问题。

如果您想在图表的 x 轴上显示列名,方法是使用 Fold Transform,它将几列折叠在一起成为一列键和一列值。

对于您的数据,它可能看起来像这样(使用颜色 scale=None 以便使用数据中的实际颜色):

import altair as alt
import pandas as pd

df = pd.DataFrame({
    'Label': ['red', 'blue', 'green', 'black'],
    'Score 1': [0.22, 0.45, 0.45, 0.45],
    'Score 2': [0.55, 0.66, 0.66, 0.66],
    'Score 3': [0.44, 0.33, 0.33, 0.33],
})

alt.Chart(df).transform_fold(
    ['Score 1', 'Score 2', 'Score 3'], as_=['column', 'value']
).mark_bar().encode(
    x='column:N',
    y='value:Q',
    color=alt.Color('Label:N', scale=None)
)

(旁注:在未来,考虑以 executable 代码的形式呈现你的代表性数据,就像我上面使用的 pandas DataFrame,而不是格式化的 table).