我正在为条形图使用自定义排序,并且效果很好。但是,当我要向其中添加错误栏并使用分层图表时,则不再考虑排序。我还定义了displayData = async () =>{
try {
let token = await AsyncStorage.getItem('token');
alert(token);
}
catch(error){
alert(error);
}
}
,这也没有考虑在内。
以下是数据示例:
axis = None
仅使用条形图即可
df = pd.DataFrame(
{'size' : ['huge', 'huge', 'huge', 'huge', 'huge', 'huge', 'big', 'big', 'big', 'big', 'big', 'big', 'small', 'small', 'small', 'small', 'small', 'small'],
'weight': ['10 mg', '10 mg', '10 g', '10 g', '10 kg', '10 kg', '10 mg', '10 mg', '10 g', '10 g', '10 kg', '10 kg','10 mg', '10 mg', '10 g', '10 g', '10 kg', '10 kg'],
'value': [3.5,2.6,5.1,6.5,2.3,4.6,7.1,2.8,6.9,1.5,2.6,2.8,6.9,2.3,4.6,3.5,2.6,5.1]
}
)
但不再显示错误栏:
alt.Chart(df).mark_bar().encode(
x = alt.X('weight:O', title=None, axis=None, sort=['10 kg', '10 g', '10 mg']),
y = alt.Y('mean(value)', title='Value'),
color = alt.Color('weight:O', sort=['10 kg', '10 g', '10 mg']),
column = alt.Column('size', sort=['huge', 'big', 'small'])
)
在两个图中,error_bars = alt.Chart().mark_errorbar(extent='ci').encode(
x=alt.X('weight:O', sort=['10 kg', '10 g', '10 mg']),
y='value:Q'
)
bars = alt.Chart().mark_bar().encode(
x = alt.X('weight:O', title=None, axis=None, sort=['10 kg', '10 g', '10 mg']),
y = alt.Y('mean(value)', title='Value'),
color = alt.Color('weight:O', sort=['10 kg', '10 g', '10 mg'])
)
alt.layer(bars, error_bars, data=df).facet(
column = alt.Column('size', sort=['huge', 'big', 'small'])
)
和axis
均已设置为title
,但未在分层图表中予以考虑。奇怪的是,排序是考虑到图例(请参见None
),而不是x轴(在每个尺寸内)。
是否可以解决此问题?还是我没有正确使用分层图表?
答案 0 :(得分:1)
要隐藏分层图表中的轴,应在两层中分别设置axis=None
和title=None
:
error_bars = alt.Chart().mark_errorbar(extent='ci').encode(
x=alt.X('weight:O', title=None, axis=None, sort=['10 kg', '10 g', '10 mg']),
y='value:Q'
)
bars = alt.Chart().mark_bar().encode(
x = alt.X('weight:O', title=None, axis=None, sort=['10 kg', '10 g', '10 mg']),
y = alt.Y('mean(value)', title='Value'),
color = alt.Color('weight:O', sort=['10 kg', '10 g', '10 mg'])
)
alt.layer(bars, error_bars, data=df).facet(
column = alt.Column('size', sort=['huge', 'big', 'small'])
)
您会注意到我的图表版本具有正确的排序顺序:这是因为我使用的是Altair 4.0版。较早版本的Altair / Vega-Lite中有一个bug,无法在分层图表中正确显示排序。
更新到Altair 4.0或更高版本,您的排序将起作用。