簡體   English   中英

使用 alt.condition 標記點角度時出現類型錯誤

[英]Type error when using alt.condition for mark point angle

我正在嘗試 plot 箭頭指向左或右並且是綠色或紅色,具體取決於條件。 它適用於顏色,但不適用於我用於箭頭頭部的三角形(標記點)的角度。 這是數據和代碼: 在此處輸入圖像描述

color=alt.condition("datum.Current >= datum.Previous",alt.value("green"),alt.value("red"))
angle=alt.condition("datum.Current >= datum.Previous",alt.value(210),alt.value(30))
alt.Chart(df_chart).mark_point(size=200,shape='triangle'
                    ,angle=angle).encode(alt.X('Current'),alt.Y('Group'),color=color)

我收到此錯誤: 在此處輸入圖像描述

如果我將角度更改為數字,這就是我得到的結果,它可以正常工作,除了我沒有得到指向左側的紅色箭頭: 在此處輸入圖像描述

您可以將alt.condition傳遞給角度編碼而不是角度標記屬性:

alt.Chart(df).mark_point(size=400, shape='triangle').encode(
    alt.X('Current'),
    alt.Y('Group'),
    angle=alt.condition("datum.Current >= datum.Previous", alt.value(210), alt.value(30)),
    color='Group:N'
)

在此處輸入圖像描述

您不能將條件用作mark參數,只能根據https://github.com/altair-viz/altair/issues/1976對參數進行encoding 現在,由於某種原因,似乎條件在傳遞給angle編碼時也不起作用,但您可以通過使用 transform_calculate 來計算新字段值並引用該字段來解決這個問題:

alt.Chart(df_chart).mark_point(size=400, shape='triangle').encode(
    alt.X('Current'),
    alt.Y('Group'),
    angle=alt.Angle('angle:Q', scale=alt.Scale(domain=[0, 360])),
    color='Group:N'
).transform_calculate(
    angle="datum.Current >= datum.Previous ? 210 : 30"
)

在此處輸入圖像描述

定義域很重要,您可以在此處查看另一個示例https://altair-viz.github.io/gallery/wind_vector_map.ZFC35FDC70D5FC69D269883A822C7A53 一般來說,我會避免將條件傳遞給顏色來控制值,而是使用具有現有字段值的range參數,如文檔https://altair-viz.github.io/user_guide/customization.html#color-域和范圍

暫無
暫無

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

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