[英]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.