Линейный график Python Altair отрезан по количеству

В настоящее время я пытаюсь отрезать линейный график в Альтаире. Мой код до сих пор:

    Chart(orient_frame).mark_line().encode(
    x = X('year:O'),
    y = Y('count(type:N)', scale=Scale(domain=(0,2500)),
    color = Color('type:N')
    )

число (тип:N) достигает значений более 9100, и я хочу полностью исключить их из графика. Но Scale() не обрезает линию, поэтому одна линия "выходит из графика".

Я тоже уже пробовал

    Chart(orient_frame).mark_line().encode(
        x = X('year:O'),
        y = Y('count(type:N)'),
        color = Color('type:N')
    ).transform_data(
        filter='count(type:N) < 2500'
    )

но он просто полностью опустошает вывод. Может ли кто-нибудь помочь мне здесь? Было бы здорово! Это выход первого пока

введите описание изображения здесь

Что касается минимального рабочего примера, спросили:

import altair as al
import pandas as pd

#Create a simple 1 variable example
answers = ['No' for _ in range(3)]
answers.extend(['Yes' for _ in range(5)])
answers.extend(['Maybe' for _ in range(20)])

dataframe = pd.DataFrame({'var1': answers})

#create Chart
al.Chart(dataframe).mark_bar().encode(
    x=al.X('var1:N'),
    y=al.Y('count(*):Q', scale=al.Scale(domain=(0,6)))

)

В этом примере я хочу увеличить масштаб ответов да / нет, потому что меня не волнуют возможные ответы.

Я могу установить шкалу, но я не могу помешать планке подняться на полные 20 тиков.

1 ответ

Решение

По замыслу Альтаир не скрывает никаких данных. См.: https://github.com/altair-viz/altair/issues/316.

Однако, если вы все еще хотите скрыть некоторые данные, вам необходимо использовать clamp аргумент.

import altair as al
import pandas as pd

#Create a simple 1 variable example
answers = ['No' for _ in range(3)]
answers.extend(['Yes' for _ in range(5)])
answers.extend(['Maybe' for _ in range(20)])

dataframe = pd.DataFrame({'var1': answers})

#create Chart
al.Chart(dataframe).mark_bar().encode(
    x=al.X('var1:N'),
    y=al.Y('count(*):Q', scale=al.Scale(domain=(0, 6), clamp=True))

)

Это производит следующий вывод.

Другие вопросы по тегам