在 Altair 中更改 y 轴刻度数
Changing Number of y-axis Ticks in Altair
我使用对称对数 y 轴生成了这张图片,比较了 2010 年至 2020 年十年期间比特币与房地产投资信托基金的收益率:
该图是从此 DataFrame 生成的:
btc_yields Year reit_yields
0 3619143193 2010 38791
1 45790476 2011 31261
2 37433124 2012 30274
3 2739779 2013 4051
4 808407 2014 282
5 1711472 2015 650
6 685726 2016 863
7 75958 2017 1324
8 49428 2018 976
9 34330 2019 -285
10 27005 2020 631
使用此代码:
alt.Chart(merged_btc_reit_low_inf).transform_fold(
['btc_yields', 'reit_yields'],
).mark_line(strokeWidth = 5).encode(
x=alt.X('Year:N', title = 'Year Investment Made'),
y=alt.Y('value:Q', title = 'Returns in USD',
scale=alt.Scale(type='symlog'),
axis=alt.Axis(tickCount=merged_btc_reit_low_inf.shape[0])),
color='key:N',
tooltip = 'value:Q'
).properties(
width = 600,
height = 400,
title = 'Return on ,000 Seed Investment in Bitcoin'
).configure_axis(
labelFontSize=14,
titleFontSize=16,
labelAngle = 0
).configure_title(
fontSize = 21
).configure_legend(
labelFontSize = 14
)
我不确定为什么,即使 axis=alt.Axis(tickCount=merged_btc_reit_low_inf.shape[0])
也只有 3 个 y 轴刻度。我想要一只手将 y 轴刻度数增加到足以让绘图提供更多信息,特别是考虑到对数转换轴。
您可以显式设置轴 values
而不是尝试调整刻度数:
from itertools import product
...
axis=alt.Axis(values=[0] + [10**x * y for (x, y) in product(range(2, 9, 2), (1, -1))]))
# There might be a nicer way of composing this list...
我认为 tickCount
对您不起作用的原因是来自 the docs 的这一部分:
The resulting number may be different so that values are “nice” (multiples of 2, 5, 10) and lie within the underlying scale’s range.
我不确定为什么它们不对称,此参数可能不适用于 symlog
因此您可能想在 VegaLite 存储库中打开一个功能请求。
我使用对称对数 y 轴生成了这张图片,比较了 2010 年至 2020 年十年期间比特币与房地产投资信托基金的收益率:
该图是从此 DataFrame 生成的:
btc_yields Year reit_yields
0 3619143193 2010 38791
1 45790476 2011 31261
2 37433124 2012 30274
3 2739779 2013 4051
4 808407 2014 282
5 1711472 2015 650
6 685726 2016 863
7 75958 2017 1324
8 49428 2018 976
9 34330 2019 -285
10 27005 2020 631
使用此代码:
alt.Chart(merged_btc_reit_low_inf).transform_fold(
['btc_yields', 'reit_yields'],
).mark_line(strokeWidth = 5).encode(
x=alt.X('Year:N', title = 'Year Investment Made'),
y=alt.Y('value:Q', title = 'Returns in USD',
scale=alt.Scale(type='symlog'),
axis=alt.Axis(tickCount=merged_btc_reit_low_inf.shape[0])),
color='key:N',
tooltip = 'value:Q'
).properties(
width = 600,
height = 400,
title = 'Return on ,000 Seed Investment in Bitcoin'
).configure_axis(
labelFontSize=14,
titleFontSize=16,
labelAngle = 0
).configure_title(
fontSize = 21
).configure_legend(
labelFontSize = 14
)
我不确定为什么,即使 axis=alt.Axis(tickCount=merged_btc_reit_low_inf.shape[0])
也只有 3 个 y 轴刻度。我想要一只手将 y 轴刻度数增加到足以让绘图提供更多信息,特别是考虑到对数转换轴。
您可以显式设置轴 values
而不是尝试调整刻度数:
from itertools import product
...
axis=alt.Axis(values=[0] + [10**x * y for (x, y) in product(range(2, 9, 2), (1, -1))]))
# There might be a nicer way of composing this list...
我认为 tickCount
对您不起作用的原因是来自 the docs 的这一部分:
The resulting number may be different so that values are “nice” (multiples of 2, 5, 10) and lie within the underlying scale’s range.
我不确定为什么它们不对称,此参数可能不适用于 symlog
因此您可能想在 VegaLite 存储库中打开一个功能请求。