【问题标题】:How to add text on interactive Scatter on Altair?如何在 Altair 上的交互式 Scatter 上添加文本?
【发布时间】:2021-08-04 07:05:49
【问题描述】:

我尝试改编来自 altair doc (https://altair-viz.github.io/gallery/select_detail.html#selection-detail-example) 的 Selection Detail Example

我不会详细说明我的 Dataframe 结构,它与示例中的结构相同(包括变量名称)。

本机代码运行良好:

# Data is prepared, now make a chart

selector = alt.selection_single(empty='all', fields=['id'])

base = alt.Chart(data).properties(
    width=250,
    height=250
).add_selection(selector)


points = base.mark_point(filled=True, size=200,opacity=0.9).encode(
    x=alt.X('mean(y)',title='Durée de perception',scale=alt.Scale(domain=(11, 23))),
    y=alt.Y('mean(x)',title='Taux de marge (%PM)'),
    color=alt.condition(selector, 'id:O', alt.value('lightgray')),
    tooltip = ['mean(y)','mean(x)']
)

timeseries = base.mark_bar(opacity=1).encode(
    x=alt.X('time', title='Items'),
    y=alt.Y('value', scale=alt.Scale(domain=(-1, 1)),stack=None),
    color=alt.Color('id:O',scale=alt.Scale(domain=domain, range=range_))
                    #, legend=None)
).transform_filter(
    selector
)

points | timeseries

在这个阶段没有问题,即使在右侧图表上没有选择时隐藏右侧图表上的所有条形可能很有用(不知道是否可能?) p>

之后,我尝试在散点图中添加文本,并在代码末尾添加:

text = points.mark_text(dy=-5).encode(
    x=alt.X('mean(y)',title='Durée de perception',scale=alt.Scale(domain=(11, 23))),
    y=alt.Y('mean(x)',title='NBV (%CA)'),
    text='id:O'
)


(points + text) | timeseries

这会导致以下错误消息:

Javascript 错误:重复的信号名称:“selector094_tuple” 这通常意味着您的图表规范中有错字。请参阅 javascript 控制台以获取完整的回溯。

如果您有任何想法,我将不胜感激

谢谢

【问题讨论】:

    标签: text interactive altair


    【解决方案1】:

    问题是您无法将相同的选择添加到两个不同的图层,您可以通过从points 派生text 隐式执行此操作。试试这个:

    text = alt.Chart(data).mark_text(dy=-5).encode(
        x=alt.X('mean(y)',title='Durée de perception',scale=alt.Scale(domain=(11, 23))),
        y=alt.Y('mean(x)',title='NBV (%CA)'),
        text='id:O'
    )
    
    
    (points + text) | timeseries
    

    【讨论】:

    • 非常感谢。我更好地理解并且效果很好。
    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2011-08-17
    相关资源
    最近更新 更多