首页 > 解决方案 > Altair散点图到条形图单选数据框行

问题描述

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

标签 得分 1 得分 2 得分 3
红色的 0.22 0.55。 0.44
蓝色的 0.45 0.66。 0.33
绿色 0.45 0.66。 0.33
黑色的 0.45 0.66。 0.33

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

标签: pythonpandasvisualizationinteractivealtair

解决方案


目前尚不清楚您希望在描述中提到的交互式散点图中显示什么,但我可以回答您关于条形图的问题。

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

对于您的数据,它可能看起来像这样(使用颜色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)
)

在此处输入图像描述

(旁注:将来,考虑以可执行代码的形式(例如我上面使用的 pandas DataFrame,而不是格式化表格的形式)呈现您的代表性数据。)


推荐阅读