Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当altair图表中两个选择器都处于活动状态时,仅显示两个选择器的交点_Python_Visualization_Altair_Vega Lite_Vega - Fatal编程技术网

Python 当altair图表中两个选择器都处于活动状态时,仅显示两个选择器的交点

Python 当altair图表中两个选择器都处于活动状态时,仅显示两个选择器的交点,python,visualization,altair,vega-lite,vega,Python,Visualization,Altair,Vega Lite,Vega,我制作了一个Altair可视化,其中包含两个选择器,它们位于我的数据帧的两个不同变量上 当我尝试使用一个时,效果很好-> 当我使用另一个选择器时,它也可以正常工作-> 但是,当我使用两个选择器时,我只想显示两个选择器的交叉点,而不是此处显示的-> 是否可以在只有一个选择器处于活动状态时显示每个选择器的选择,以及在两个选择器都处于活动状态时显示交叉点 编辑:我用示例数据为这个问题添加了代码,希望它更容易重现 import altair as alt from vega_datasets impor

我制作了一个Altair可视化,其中包含两个选择器,它们位于我的数据帧的两个不同变量上

当我尝试使用一个时,效果很好->

当我使用另一个选择器时,它也可以正常工作->

但是,当我使用两个选择器时,我只想显示两个选择器的交叉点,而不是此处显示的->

是否可以在只有一个选择器处于活动状态时显示每个选择器的选择,以及在两个选择器都处于活动状态时显示交叉点

编辑:我用示例数据为这个问题添加了代码,希望它更容易重现

import altair as alt
from vega_datasets import data

cars = data.cars.url

alex = alt.selection_interval(
    on="[mousedown[event.altKey], mouseup] > mousemove",
    name='alex', resolve='intersect'
)
morgan = alt.selection_interval(
    on="[mousedown[event.shiftKey], mouseup] > mousemove",
    mark=alt.BrushConfig(fill="#fdbb84", fillOpacity=0.5, stroke="#e34a33"),
    name='morgan', resolve='intersect'
)

alt.Chart(cars).mark_rect().encode(
    x='Cylinders:O',
    y='Origin:O',
    color=alt.condition((alex & ~morgan) | (~alex & morgan) | (alex & morgan), 'count()', alt.ColorValue("grey"))
).add_selection(
    alex, morgan
).properties(
    width=300,
    height=180
)
我希望图表显示仅选择“alex”选择器时选择的“alex”,仅选择“morgan”时选择的“morgan”,以及仅选择“alex”和“morgan”选择器时选择的交点


非常感谢您的支持

听起来,在每个选择中设置
resolve='intersect'
可能是您想要的。如果这不起作用,请提供您用于
new_df
的数据,或使用示例数据重现此问题。我使用示例数据重现了此问题,但使用resolve=“intersect”无法解决我的问题。有办法吗?非常感谢!感谢您更新示例
resolve
在这里没有帮助,抱歉,我最初以为您有多个子批次,每个批次中都有单独的选择。选择的默认行为是在不使用选择时选择所有内容(
empty='all'
)。从理论上讲,这意味着使用条件
(alex&morgan)
,就足够了,因为当您使用其中一个选项时,另一个选项应保持不斜体,并且所有值都已选定。在实践中,似乎只要使用一个,两个都会被清除,设置
clear=False
也没有帮助。。。。。。这可能是无意的,因此请在VegaLite问题跟踪器上检查是否存在任何问题。您也可以尝试为选择设置
init
参数,但我尝试了很短时间,运气不太好。