gpt4 book ai didi

python - Altair 中的平行坐标

转载 作者:行者123 更新时间:2023-12-05 04:40:07 29 4
gpt4 key购买 nike

我想绘制具有多个 y 轴的平行坐标图。我已经在 Vega-Lite 中找到了如何做到这一点 here但我还没有找到使用 Altair 的方法,只有一个 very simple example其中所有 y 轴都相同。有什么办法吗this plot在牵牛星?

最佳答案

请注意,这种图表不是 Altair 或 Vega-Lite 的“内置”图表,因此创建它的唯一方法是使用手动转换序列,并从刻度和文本标记手动构建轴。

这是您链接到的答案中图表的 Altair 版本:

import altair as alt
from vega_datasets import data

base = alt.Chart(
data.iris.url
).transform_window(
index="count()"
).transform_fold(
["petalLength", "petalWidth", "sepalLength", "sepalWidth"]
).transform_joinaggregate(
min="min(value)",
max="max(value)",
groupby=["key"]
).transform_calculate(
norm_val="(datum.value - datum.min) / (datum.max - datum.min)",
mid="(datum.min + datum.max) / 2"
).properties(width=600, height=300)

lines = base.mark_line(opacity=0.3).encode(
x='key:N',
y=alt.Y('norm_val:Q', axis=None),
color="species:N",
detail="index:N",
tooltip=["petalLength:N", "petalWidth:N", "sepalLength:N", "sepalWidth:N"]
)

rules = base.mark_rule(
color="#ccc", tooltip=None
).encode(
x="key:N",
detail="count():Q",
)

def ytick(yvalue, field):
scale = base.encode(x='key:N', y=alt.value(yvalue), text=f"min({field}):Q")
return alt.layer(
scale.mark_text(baseline="middle", align="right", dx=-5, tooltip=None),
scale.mark_tick(size=8, color="#ccc", orient="horizontal", tooltip=None)
)

alt.layer(
lines, rules, ytick(0, "max"), ytick(150, "mid"), ytick(300, "min")
).configure_axisX(
domain=False, labelAngle=0, tickColor="#ccc", title=None
).configure_view(
stroke=None
)

enter image description here

关于python - Altair 中的平行坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70341974/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com