Как я могу пометить только точки, где X >= 3? Я не вижу никаких точек, помеченных этим выходом.

Это очень похоже на пример с простыми помеченными точками, но я чувствую, что упускаю что-то простое.


import altair as alt
import pandas as pd

source = pd.DataFrame({
    'x': [1, 3, 5, 7, 9],
    'y': [1, 3, 5, 7, 9],
    'label': ['A', 'B', 'C', 'D', 'E']
})

points = alt.Chart(source).mark_point().encode(
    x='x:Q',
    y='y:Q'
)

text = points.mark_text(
    align='left',
    baseline='middle',
    dx=7
).encode(
    text=alt.condition(alt.FieldGTEPredicate('x:Q', 3), 'label', alt.value(' '))
)

points + text

enter image description here

1
ac24 22 Апр 2020 в 16:14

1 ответ

Предикаты не распознают сокращения типов кодирования; вы должны использовать имя поля напрямую:

text=alt.condition(alt.FieldGTEPredicate('x', 3), 'label', alt.value(' '))

Еще лучше, поскольку это, по сути, операция фильтра, использовать фильтр преобразования< /a> вместо условного значения:

import altair as alt
import pandas as pd

source = pd.DataFrame({
    'x': [1, 3, 5, 7, 9],
    'y': [1, 3, 5, 7, 9],
    'label': ['A', 'B', 'C', 'D', 'E']
})

points = alt.Chart(source).mark_point().encode(
    x='x:Q',
    y='y:Q'
)

text = points.transform_filter(
    alt.datum.x >= 3
).mark_text(
    align='left',
    baseline='middle',
    dx=7
).encode(
    text='label'
)

points + text

enter image description here

1
jakevdp 22 Апр 2020 в 19:47