为了账号安全,请及时绑定邮箱和手机立即绑定

altair 多面直方图 - 独立刻度

altair 多面直方图 - 独立刻度

梵蒂冈之花 2022-09-13 19:34:03
假设我有一个数据集,其中的变量可以彼此完全不同地缩放。我想为每个数值变量创建直方图。我试图使x和y比例彼此独立,以便规模不会影响视觉质量。但即使我使用它,也只能使y尺度独立,而x在所有变量中仍然很常见。这可以从下图中看到,可以通过应用代码获得。这是期望的行为还是我错过了什么?resolve_scale()我的问题是:1.如何使x刻度独立?2. 如何使标题更接近剧情?感谢您的帮助。版本: 蟒蛇 4.0alt.__version__'4.0.1'import altair as altdata = alt.datasets.load_dataset('flights-2k')chosen_origin_airports = data.groupby('origin').size().sort_values(ascending=False).head(12).index.tolist()data = data[data.origin.isin(chosen_origin_airports)]data.loc[data.origin=='BWI', 'delay']  = data.loc[data.origin=='BWI', 'delay'] * (10000)alt.Chart(data=data).mark_bar().encode(    x = alt.X('delay:Q',               axis=alt.Axis(title=''),               scale=alt.Scale(zero=False),              bin=alt.Bin(maxbins=20)),    y = alt.Y('count():Q',               axis=alt.Axis(title='')),    color = alt.Color('origin:N')).properties(    width=130,    height=130).facet(    alt.Column('origin:N', sort = alt.EncodingSortField(order=None)),    align= 'all',    padding=0,    columns=4,    spacing=0).properties(    title='').configure_title(    fontSize=20,    font='Courier',    anchor='middle',    color='gray',    align='left').configure_header(    title=None,    titleColor='green',    titleFontSize=14,    labelColor='forestgreen',    labelFontSize=14).resolve_axis(    x='independent',    y='independent').resolve_scale(    x='independent',     y='independent')
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您的秤是独立的,但您的分档不是。遗憾的是,Vega-Lite 语法没有提供简单的方法来定义将不同的 bin 参数应用于不同的数据子集的 bin 转换,因此您必须手动对图表的每个面板使用不同的 bin 转换。


我可能会做这样的事情:


chart = alt.Chart(data).mark_bar().encode(

    x = alt.X('delay:Q', 

              axis=alt.Axis(title=''), 

              scale=alt.Scale(zero=False),

              bin=alt.Bin(maxbins=20)),

    y = alt.Y('count():Q', 

              axis=alt.Axis(title='')),

    color = alt.Color('origin:N')

).properties(

    width=130,

    height=130

)


alt.ConcatChart(

    concat=[

      chart.transform_filter(alt.datum.origin == value).properties(title=value)

      for value in sorted(data.origin.unique())

    ],

    columns=4

).configure_title(

    fontSize=20,

    font='Courier',

    anchor='middle',

    color='gray',

    align='left'

).resolve_axis(

    x='independent',

    y='independent'

).resolve_scale(

    x='independent', 

    y='independent'

)

//img1.sycdn.imooc.com//63206ad70001665107370580.jpg

查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 394 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信