我目前正在尝试在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')
    )


count(type: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'
    )


但它只会完全清空输出。有人能帮我一下吗?那会很好!
这是到目前为止的第一个输出

python - Python Altair折线图按计数切断-LMLPHP

至于一个最小的工作示例,要求:

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个刻度的门槛。

最佳答案

根据设计,Altair不会隐藏任何数据。参见:https://github.com/altair-viz/altair/issues/316#issuecomment-292560808

但是,如果您仍然希望隐藏一些数据,则需要使用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))

)


这将产生以下输出。

python - Python Altair折线图按计数切断-LMLPHP

关于python - Python Altair折线图按计数切断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43231709/

10-11 07:41