Python 如何根据点的选择更新直方图(牵牛星)?

Python 如何根据点的选择更新直方图(牵牛星)?,python,altair,Python,Altair,我的目标是根据左侧点的选择更新右侧显示的直方图。 最初的绘图似乎是好的,但是一旦做出选择,直方图就不会被重新绘制(altair 3.2.0) 有人知道怎么做吗 下面是重新创建示例的代码: import altair as alt import pandas as pd import numpy as np from random import choice dates = pd.date_range("1.1.2019", "2.28.2019") np.random.seed(999) Y

我的目标是根据左侧点的选择更新右侧显示的直方图。 最初的绘图似乎是好的,但是一旦做出选择,直方图就不会被重新绘制(altair 3.2.0)

有人知道怎么做吗

下面是重新创建示例的代码:

import altair as alt
import pandas as pd
import numpy as np
from random import choice

dates = pd.date_range("1.1.2019", "2.28.2019")
np.random.seed(999)
Y = np.random.normal(0.5, 0.1, len(dates))
features = [choice(["a", "b", "c"]) for i in range(len(dates))]
df = pd.DataFrame({"dates": dates, "Y": Y, "features": features})

base = alt.Chart(df)
area_args = {"opacity": 0.3, "interpolate": "step"}
pts = alt.selection(type="interval", encodings=["x"])
points = (
    base.mark_circle()
    .encode(alt.X("dates:T"), alt.Y("Y:Q"), color="features:N")
    .add_selection(pts)
)

yscale = alt.Scale(domain=(0, 1))
right_hist = (
    base.mark_area(**area_args)
    .encode(
        alt.Y(
            "Y:Q", bin=alt.Bin(maxbins=20, extent=yscale.domain), stack=None, title=""
        ),
        alt.X("count()", stack=None, title=""),
        alt.Color("features:N"),
    )
    .transform_filter(pts)
)

(points | right_hist)
编辑1:另一张图片澄清了我的观点@jvp


在注释中解决了OPs设置的问题以及绘图端的呈现方式。

在注释中解决了OPs设置的问题以及绘图端的呈现方式。

能否详细说明代码结果的错误?我运行了这段代码,输出似乎正常。嗨,杰克,VDP!直方图应仅考虑选择范围内的点(灰色)(参见新图像)。这里的问题是,我不知道如何将其转换为正确的python/altair代码。该片段本身只是各个altair网站上各种示例的组合;)我对altair还是新手,所以我将输出保存到一个单独的html文件中,在另一个选项卡中打开它,它就工作了!不确定发生了什么。我怀疑您的前端渲染器(例如用于jupyter笔记本的vega笔记本扩展,用于jupyterlab的vega labextension)已过时。根据您的安装方式,它可能无法与您的Altair版本保持同步。但是,当您将图表保存为HTML时,它会直接使用最新的Vega Lite版本。更新你的前端,它应该可以正常工作。这可能完全是因为我的设置被污染了。明天我将在另一台机器上测试这个问题,并最终删除这个问题。谢谢你宝贵的时间,杰克,VDP!你能详细说明你的代码的结果出了什么问题吗?我运行了这段代码,输出似乎正常。嗨,杰克,VDP!直方图应仅考虑选择范围内的点(灰色)(参见新图像)。这里的问题是,我不知道如何将其转换为正确的python/altair代码。该片段本身只是各个altair网站上各种示例的组合;)我对altair还是新手,所以我将输出保存到一个单独的html文件中,在另一个选项卡中打开它,它就工作了!不确定发生了什么。我怀疑您的前端渲染器(例如用于jupyter笔记本的vega笔记本扩展,用于jupyterlab的vega labextension)已过时。根据您的安装方式,它可能无法与您的Altair版本保持同步。但是,当您将图表保存为HTML时,它会直接使用最新的Vega Lite版本。更新你的前端,它应该可以正常工作。这可能完全是因为我的设置被污染了。明天我将在另一台机器上测试这个问题,并最终删除这个问题。谢谢你宝贵的时间,杰克,VDP!