gpt4 book ai didi

python - 在带 Altair 的条形图上使用颜色似乎可以防止 zero=False 在比例尺上产生预期效果

转载 作者:行者123 更新时间:2023-12-04 04:06:23 25 4
gpt4 key购买 nike

下面代码中的第一个图表(基于此:https://altair-viz.github.io/gallery/us_population_over_time_facet.html)似乎强制 Y 轴不能像预期的那样从零开始。但是第二个图表,在编码中包含颜色,似乎使 alt.Scale 中的 zero=False 不再受到尊重

编辑:忘记提及使用 Altair 4.1.0

import altair as alt
from vega_datasets import data
import pandas as pd

source = data.population.url

df = pd.read_json(source)
df = df[df["age"] <= 40]

alt.Chart(df).mark_bar().encode(
x="age:O",
y=alt.Y(
"sum(people):Q",
title="Population",
axis=alt.Axis(format="~s"),
scale=alt.Scale(zero=False),
),
facet=alt.Facet("year:O", columns=5),
).resolve_scale(y="independent").properties(
title="US Age Distribution By Year", width=90, height=80
)

alt.Chart(df).mark_bar().encode(
x="age:O",
y=alt.Y(
"sum(people):Q",
title="Population",
axis=alt.Axis(format="~s"),
scale=alt.Scale(zero=False),
),
facet=alt.Facet("year:O", columns=5),
color=alt.Color("year"),
).resolve_scale(y="independent").properties(
title="US Age Distribution By Year", width=90, height=80
)

enter image description here

enter image description here

最佳答案

发生这种情况是因为比例会自动调整以显示您着色所依据的变量中的所有组。如果我们查看具有堆叠颜色的单个条形图,则更容易理解:

import altair as alt
from vega_datasets import data
import pandas as pd

source = data.population.url

df = pd.read_json(source)
df = df[df["age"] <= 40]

alt.Chart(df.query('year < 1880')).mark_bar().encode(
x="age:O",
y=alt.Y(
"sum(people):Q",
axis=alt.Axis(format="~s"),
scale=alt.Scale(zero=False)),
color=alt.Color("year"))

enter image description here

您正在计算总和,这意味着所有年份都将在该栏中的某个位置堆叠在一起。 Altair/Vega-Lite 扩展了轴,以便将所有组都包含在您的彩色变量中。

如果改为按年龄着色,轴将再次扩展以包括所有着色组,但因为它们现在不在每个条形的底部,所以轴被切到零以上。

import altair as alt
from vega_datasets import data
import pandas as pd

source = data.population.url

df = pd.read_json(source)
df = df[df["age"] <= 40]

alt.Chart(df.query('year < 1880')).mark_bar().encode(
x="age:O",
y=alt.Y(
"sum(people):Q",
axis=alt.Axis(format="~s"),
scale=alt.Scale(zero=False)),
color=alt.Color("age"))

enter image description here

唯一不一致的是,为什么第一个图中不只显示最暗颜色的尖端并切割2M左右?我不确定这一点。

关于python - 在带 Altair 的条形图上使用颜色似乎可以防止 zero=False 在比例尺上产生预期效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62398323/

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