条件查找 Altair

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

我发现使用

alt.LookupData
查找数据时,返回的是最后一个数据。在下面的示例中,当我在 lookup_data 中查找 field 参数以用于确定圆圈的颜色时,它会返回数据的后半部分
[0] * 5 + [1] * 5
(其中
selection_param==1
)。

如何设置条件,以便在 selection_param 为 0 (selection_param==0) 时使用

field
中的值?

import altair as alt
import numpy as np
import pandas as pd

# Generate data primary data
np.random.seed(42)
primary_data = pd.DataFrame({
    'key': np.arange(10),
    'x': np.random.normal(0, 1, 10),
    'y': np.random.normal(0, 1, 10),
})

# Generate lookup data
lookup_data = pd.DataFrame({
    'key': list(np.arange(10)) * 2,
    'selection_param': [0] * 10 + [1] * 10,
    'field': [0, 1, 2, 3, 4] * 2 + [0] * 5 + [1] * 5,
})

# Create chart
alt.Chart(primary_data).mark_circle().encode(
    x='x',
    y='y',
    color='field:N'
).transform_lookup(
    'key',
    from_=alt.LookupData(
        lookup_data, 
        key='key',
        fields=['field']
    )
)

enter image description here

python pandas visualization lookup altair
1个回答
0
投票

要在 Selection_param == 0 时根据 Selection_param 列有条件地设置颜色,您需要修改查找转换的操作方式,以确保仅将所需的数据子集用于查找。

Altair的transform_lookup方法本身不直接支持条件。但是,您可以在查找中使用lookup_data 之前对其进行过滤。以下是如何修改代码以仅使用lookup_data中的值,其中selection_param == 0:

filtered_lookup_data = lookup_data[lookup_data['selection_param'] == 0]
chart = alt.Chart(primary_data).mark_circle().encode(
x='x',
y='y',
color='field:N').transform_lookup(
'key',
from_=alt.LookupData(
    filtered_lookup_data, 
    key='key',
    fields=['field']))
© www.soinside.com 2019 - 2024. All rights reserved.