繁体   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