如何解决Altair:在 LayerChart 中应用选择和 ~selection
这里的用例是分析聚类的结果;我们想选择一个集群和一个特征(所以有两个下拉列表),并显示一个分层直方图,显示“集群”中点的“特征”分布,与“集群”外点的“特征”分布分层.” 额外的限制是我们需要独立的 HTML,所以我们不能使用任何需要 python 内核的东西。
在探索了 plotly
和 bokeh
之后,altair
给了我最接近的解决方案(如下)。
输入数据是这样的:
import pandas as pd
import numpy as np
import altair as alt
df = pd.DataFrame({"cluster": np.random.choice([1,2],size=100)}) # cluster labels
df["feature1"] = np.random.normal(loc=1,scale=0.7,size=100) + df["cluster"] # a feature column
df["feature2"] = np.random.normal(loc=10,scale=1,size=100) - 3*df["cluster"] # a second feature column
cluster feature1 feature2
0 2 3.4 4.5
1 2 2.4 3.9
2 1 1.6 5.7
3 1 1.6 5.7
4 2 3.3 4.5
我第一次融化到:
dfm = pd.melt(df.set_index('cluster',drop=True),ignore_index=False,var_name='feature')
dfm.reset_index(inplace=True) # Get cluster labels as a column again
cluster feature value
0 2 feature1 3.4
1 2 feature1 2.4
2 1 feature1 1.6
3 1 feature1 1.6
4 2 feature1 3.3
我有代码工作,除了我必须使用 VConcatChart
而不是 LayerChart
因为对于集群选择我需要将 selection
应用于一个直方图(集群中的点)和 { {1}} 到另一个(指向集群外)。
~selection
Here is an image of the resulting viz,not the interactive form.
有什么方法可以实现这一点,但是两个直方图是分层的吗?
解决方法
根据评论,解决方案是将 alt.vconcat
替换为 alt.layer
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。