[英]mark_line in altair/vega-lite reorders the data when x axis contains duplicates
[英]Broken axis in Altair/Vega
我有一个标准化的堆积面积图,其中一个变量与其他变量之间存在巨大差异,例如:
df1=pd.DataFrame.from_dict(
{'YEAR': {0: 2010,
1: 2010, 2: 2010, 3: 2010, 4: 2011, 5: 2011, 6: 2011, 7: 2011,
8: 2012, 9: 2012, 10: 2012, 11: 2012, 12: 2013, 13: 2013, 14: 2013, 15: 2013},
'impact_FU': {0: 0.031479085164086554, 1: 5.9856927170853295e-05, 2: 1.1035885271638534e-05, 3: 5.8233509026863169e-06,
4: 0.059176271387395112, 5: 0.00011179170132430088, 6: 1.9783914536689014e-05, 7: 1.0670218804040578e-05,
8: 0.083935088170893221, 9: 0.00014806339884972569, 10: 2.3424374354037232e-05, 11: 1.30716950360811e-05,
12: 0.10678138273474649, 13: 0.00016610749233828763, 14: 2.4764766148334989e-05,
15: 1.3509464279754472e-05},
'proc': {0: 'biogenic', 1: 'harvesting', 2: 'planting', 3: 'tending',
4: 'biogenic', 5: 'harvesting', 6: 'planting', 7: 'tending',
8: 'biogenic', 9: 'harvesting', 10: 'planting', 11: 'tending',
12: 'biogenic', 13: 'harvesting', 14: 'planting', 15: 'tending'},
'scenario': {0: 'BAU45', 1: 'BAU45', 2: 'BAU45', 3: 'BAU45', 4: 'BAU45', 5: 'BAU45', 6: 'BAU45',
7: 'BAU45', 8: 'BAU45', 9: 'BAU45', 10: 'BAU45', 11: 'BAU45', 12: 'BAU45', 13: 'BAU45',
14: 'BAU45', 15: 'BAU45'}})
Chart(df1).mark_area(stacked='normalize').encode(
X('YEAR:T', timeUnit='year',),
Y('sum(impact_FU)'),
color=Color('proc:N'),
)
Altair / vega-lite / Vega中有什么方法可以使破碎的y轴...类似这样的东西?
无论如何,断轴通常被认为是可视化设计中的不良做法。
您可能需要考虑其他视觉编码,例如将对数刻度与点或线标记一起使用。
由于数据列的值范围非常不同,因此可以按以下方式使用对数刻度转换。 Altair附带许多缩放比例转换,在您的情况下,您将使用alt.Scale(type='log')
alt.Chart(df1).mark_area().encode(
alt.X('YEAR:O'),
alt.Y('impact_FU', scale=alt.Scale(type='log')),
color='proc:N',
)
产生:
Altair非常适合Facet图表,因此您可以保持对数刻度以及每个proc
上的facet,只需增加一行代码即可:
alt.Chart(df1).mark_area().encode(
alt.X('YEAR:O'),
alt.Y('impact_FU', scale=alt.Scale(type='log')),
color='proc:N',
column='proc:N'
)
要得到:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.