Altair:控制分箱轴的刻度计数
Altair: Controlling tick counts for binned axis
我正在尝试在 Altair 中生成直方图,但我无法控制与分级变量(x 轴)对应的轴的刻度计数。我是 Altair 的新手,所以很抱歉我在这里遗漏了一些明显的东西。我试图寻找其他人是否遇到过此类问题,但没有找到完全匹配的结果。
生成直方图的代码是
alt.Chart(df_test).mark_bar().encode(
x=alt.X('x:Q', bin=alt.Bin(step=0.1), scale=alt.Scale(domain=[8.9, 11.6])),
y=alt.Y('count(y):Q', title='Count(Y)')
).configure_axis(labelLimit=0, tickCount=3)
df_test
是一个 Pandas 数据框 - 可用的数据 here.
上面的代码生成了下面的直方图。更改 tickCount
会更改 y 轴刻度计数,但不会更改 x 轴。
感谢任何指导。
使用 bin=
可能有更方便的方法来执行此操作,但一种方法是将 transform_bin
与 mark_rect
一起使用,因为这不会将轴更改为分箱轴(更难定制):
import altair as alt
from vega_datasets import data
source = data.movies.url
alt.Chart(source).mark_rect(stroke='white').encode(
x=alt.X('x1:Q', title='IMDB Rating', axis=alt.Axis(tickCount=3)),
x2='x2:Q',
y='count()',
).transform_bin(
['x1', 'x2'], field='IMDB_Rating'
)
您可能会注意到您没有得到准确的刻度数,这是因为四舍五入到“不错”的值,例如 5 的倍数等。即使设置 nice=False
,所以在这些情况下,另一种方法是传递精确的刻度值 values=
。
alt.Chart(source).mark_rect(stroke='white').encode(
x=alt.X('x1:Q', title='IMDB Rating', axis=alt.Axis(values=[0, 3, 6, 9])),
x2='x2:Q',
y='count()',
).transform_bin(
['x1', 'x2'], field='IMDB_Rating'
)
小心十进制值,它们会自动显示为整数(即使使用 tickRound=False
),但位置错误(这对我来说似乎是一个错误,所以如果您进一步调查它,您可能想要关于 Vega Lite 问题跟踪器的报告。
我正在尝试在 Altair 中生成直方图,但我无法控制与分级变量(x 轴)对应的轴的刻度计数。我是 Altair 的新手,所以很抱歉我在这里遗漏了一些明显的东西。我试图寻找其他人是否遇到过此类问题,但没有找到完全匹配的结果。
生成直方图的代码是
alt.Chart(df_test).mark_bar().encode(
x=alt.X('x:Q', bin=alt.Bin(step=0.1), scale=alt.Scale(domain=[8.9, 11.6])),
y=alt.Y('count(y):Q', title='Count(Y)')
).configure_axis(labelLimit=0, tickCount=3)
df_test
是一个 Pandas 数据框 - 可用的数据 here.
上面的代码生成了下面的直方图。更改 tickCount
会更改 y 轴刻度计数,但不会更改 x 轴。
感谢任何指导。
使用 bin=
可能有更方便的方法来执行此操作,但一种方法是将 transform_bin
与 mark_rect
一起使用,因为这不会将轴更改为分箱轴(更难定制):
import altair as alt
from vega_datasets import data
source = data.movies.url
alt.Chart(source).mark_rect(stroke='white').encode(
x=alt.X('x1:Q', title='IMDB Rating', axis=alt.Axis(tickCount=3)),
x2='x2:Q',
y='count()',
).transform_bin(
['x1', 'x2'], field='IMDB_Rating'
)
您可能会注意到您没有得到准确的刻度数,这是因为四舍五入到“不错”的值,例如 5 的倍数等。即使设置 nice=False
,所以在这些情况下,另一种方法是传递精确的刻度值 values=
。
alt.Chart(source).mark_rect(stroke='white').encode(
x=alt.X('x1:Q', title='IMDB Rating', axis=alt.Axis(values=[0, 3, 6, 9])),
x2='x2:Q',
y='count()',
).transform_bin(
['x1', 'x2'], field='IMDB_Rating'
)
小心十进制值,它们会自动显示为整数(即使使用 tickRound=False
),但位置错误(这对我来说似乎是一个错误,所以如果您进一步调查它,您可能想要关于 Vega Lite 问题跟踪器的报告。