簡體   English   中英

交互式 Altair plot 軸上方的文本

[英]Text above axes of an interactive Altair plot

一段時間以來,我一直在遵循有關問題建議,將各種提示/信息放在我在 Altair 的地塊上。 但是,如果 Altair plot 設置為 interactive(),則此建議不起作用 - 在我看來,啟用比例綁定可以防止任何 plot 對象出現在矩形軸之外。

這是一個基於該鏈接的復制示例:比較生成的圖有/沒有最后注釋的 interactive() 行。

    import altair as alt
    import pandas as pd
    import numpy as np

    df = pd.DataFrame({'x': np.linspace(0, 4, 1000)})
    df['y'] = np.sin(2 * np.pi * df['x'])

    select_point = alt.selection_single(fields=('x',), nearest=True, on='mouseover', empty='none')
    line = alt.Chart(df).mark_line().encode(
        x='x:Q',
        y='y:Q',
    )
    points = line.mark_point(filled=True, size=100).encode(
        opacity=alt.condition(select_point, alt.value(1.0), alt.value(0.0)),
    ).add_selection(select_point)
    text1 = alt.Chart(df, width=600, height=400).mark_text(
        align='left', baseline='bottom', dx=+5, fontSize=12,
    ).encode(
        x=alt.value(0.0),
        y=alt.value(-1),
        text='_label:N',
        opacity=alt.condition(select_point, alt.value(1.0), alt.value(0.0)),
    ).transform_calculate(
        _label='"ABOVE AXES x = " + format(datum.x, ".2f") + ", y = " + format(datum.y, ".2f")',
    )
    text2 = alt.Chart(df, width=600, height=400).mark_text(
        align='left', baseline='bottom', dx=+5, fontSize=12,
    ).encode(
        x=alt.value(0.0),
        y=alt.value(12),
        text='_label:N',
        opacity=alt.condition(select_point, alt.value(1.0), alt.value(0.0)),
    ).transform_calculate(
        _label='"INSIDE AXES x = " + format(datum.x, ".2f") + ", y = " + format(datum.y, ".2f")',
    )
    chart = alt.layer(line, points, text1, text2)
    # chart = chart.interactive()

互動關互動開

附加信息,以防有幫助/相關:

  • 我使用interactive() 和手動選擇比例綁定對此進行了測試,效果相同
  • 將圖表保存為 HTML 后,我在 PyQT WebEngineView 容器中進行渲染
  • 肯定會在軸邊界之外對對象進行某種跟蹤,即使它們未在交互式 ON 的情況下顯示。 我還用點標記進行了測試:懸掛在軸邊界邊緣的大標記在交互式關閉時完全可見,但在交互式打開時會被切斷。 但是,如果您啟用了交互式並緩慢拖動軸邊界,您可以看到 plot標題向上移動以避免大標記從 plot 的頂部邊緣滑落,直到標記的中心離開邊界和標題彈回來。

底線問題:當 plot 設置為交互式時,如何讓文本出現在 Altair 的軸邊界之外?

clip=False傳遞給mark_text() ,文本將在軸外可見。

對於非綁定比例, clip參數默認為False ,對於綁定比例,默認為True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM