带有两条线和对数刻度 Y 轴的 Altair 线图
Altair Line Plot with Two Lines and Log-Scaled Y-Axis
我有这个数据框:
btc_yields Year reit_yields
0 3619143193 2010 -3093
1 45790476 2011 -1833
2 37433124 2012 -1632
3 2739779 2013 13984
4 808407 2014 22776
5 1711472 2015 21642
6 685726 2016 21023
7 75958 2017 19760
8 49428 2018 20704
9 34330 2019 24687
10 27005 2020 21701
并且我生成了这个 btc_yields 的年份图:
使用此代码:
btc_yield_chart = alt.Chart(btc_yields_df).mark_line(color = 'orange', strokeWidth = 7).encode(
x = alt.X('Year:N', title = 'Buy-in Year'),
y = alt.Y('btc_yields', title = 'Yields in USD ($)', scale=alt.Scale(type='log')),
tooltip = 'btc_yields'
).properties(
width = 600,
height = 400,
title = 'Return on ,000 Seed Investment in Bitcoin by Buy-in Year'
).configure_axis(
labelFontSize=14,
titleFontSize=16
).configure_title(
fontSize = 21
)
btc_yield_chart
我想使用分层图将 reit_yields 作为图表中的另一条线包含在内,但没有成功:
base = alt.Chart(merged_btc_reit_low_inf).encode(
x = alt.X('Year:N', title = 'Buy-in Year'),
).properties(
width = 600,
height = 400,
title = 'Return on ,000 Seed Investment in Bitcoin by Buy-in Year'
)
alt.layer(
base.mark_line(color = 'orange', strokeWidth = 5).encode(
y = alt.Y('btc_yields', title = 'BTC Yields in USD ($)', scale=alt.Scale(type='log')),
tooltip = 'btc_yields'
),
base.mark_line(color = 'blue', strokeWidth = 5).encode(
y = alt.Y('reit_yields', title = 'REIT Yields in USD ($)', scale=alt.Scale(type='log')),
tooltip = 'reit_yields'
)
).configure_axis(
labelFontSize=14,
titleFontSize=16
).configure_title(
fontSize = 21
)
如果我删除 scale=alt.Scale(type='log')
会生成图,但由于 y 轴不再按对数标度,因此该图根本无法提供信息。我想用这种分层格式帮助重新记录缩放 y 轴。谢谢!
负值的对数未定义,因此您需要 use the symmetric log 而不是:scale=alt.Scale(type='symlog')
。 Symlog 还定义了零附近的线性范围,以避免接近无限的对数转换值。
我有这个数据框:
btc_yields Year reit_yields
0 3619143193 2010 -3093
1 45790476 2011 -1833
2 37433124 2012 -1632
3 2739779 2013 13984
4 808407 2014 22776
5 1711472 2015 21642
6 685726 2016 21023
7 75958 2017 19760
8 49428 2018 20704
9 34330 2019 24687
10 27005 2020 21701
并且我生成了这个 btc_yields 的年份图:
使用此代码:
btc_yield_chart = alt.Chart(btc_yields_df).mark_line(color = 'orange', strokeWidth = 7).encode(
x = alt.X('Year:N', title = 'Buy-in Year'),
y = alt.Y('btc_yields', title = 'Yields in USD ($)', scale=alt.Scale(type='log')),
tooltip = 'btc_yields'
).properties(
width = 600,
height = 400,
title = 'Return on ,000 Seed Investment in Bitcoin by Buy-in Year'
).configure_axis(
labelFontSize=14,
titleFontSize=16
).configure_title(
fontSize = 21
)
btc_yield_chart
我想使用分层图将 reit_yields 作为图表中的另一条线包含在内,但没有成功:
base = alt.Chart(merged_btc_reit_low_inf).encode(
x = alt.X('Year:N', title = 'Buy-in Year'),
).properties(
width = 600,
height = 400,
title = 'Return on ,000 Seed Investment in Bitcoin by Buy-in Year'
)
alt.layer(
base.mark_line(color = 'orange', strokeWidth = 5).encode(
y = alt.Y('btc_yields', title = 'BTC Yields in USD ($)', scale=alt.Scale(type='log')),
tooltip = 'btc_yields'
),
base.mark_line(color = 'blue', strokeWidth = 5).encode(
y = alt.Y('reit_yields', title = 'REIT Yields in USD ($)', scale=alt.Scale(type='log')),
tooltip = 'reit_yields'
)
).configure_axis(
labelFontSize=14,
titleFontSize=16
).configure_title(
fontSize = 21
)
如果我删除 scale=alt.Scale(type='log')
会生成图,但由于 y 轴不再按对数标度,因此该图根本无法提供信息。我想用这种分层格式帮助重新记录缩放 y 轴。谢谢!
负值的对数未定义,因此您需要 use the symmetric log 而不是:scale=alt.Scale(type='symlog')
。 Symlog 还定义了零附近的线性范围,以避免接近无限的对数转换值。