Altair 案例1 在concat图标中显示不同的图例

需要并排显示两个单独的图表,包括它们在 Jupyterlab 中的图例,而我设法做到这一点的唯一方法是使用 hconcat。我已经做到了这一点:

import altair as alt
import pandas as pd
from altair.expr import datum
df_test=pd.read_csv("test_df.csv")

chart_m1=alt.Chart(df_test).mark_bar().encode(
            x=alt.X('counts:Q', stack="normalize",axis=None),
            y=alt.Y('category:N',sort=['A','B','C'],title=None),
            color=alt.Color('grade:N',
                sort = alt.EncodingSortField( 'sort:Q', order = 'ascending' ),
                scale = alt.Scale(domain=['good <10', 'average 10-20', 'bad >20'], range=['#0cce6b', '#ffa400', '#ff4e42']),
                legend = alt.Legend(title="Metric1",orient='top')),
            order='sort:Q',
            tooltip=['category:N','grade:N','counts:Q']
            ).transform_filter(datum.metric=='metric1'
            ).properties(height=50,width=150)

chart_m2=alt.Chart(df_test).mark_bar().encode(
            x=alt.X('counts:Q', stack="normalize",axis=None),
            y=alt.Y('category:N',sort=['A','B','C'],title=None),
            color=alt.Color('grade:N',
                sort = alt.EncodingSortField( 'sort:Q', order = 'ascending' ),
                scale = alt.Scale(domain=['good <100', 'average 100-350', 'bad >350'], range=['#0cce6b', '#ffa400', '#ff4e42']),
                legend = alt.Legend(title="Metric2",orient='top')),
            order='sort:Q',
            tooltip=['category:N','grade:N','counts:Q']
            ).transform_filter(datum.metric=='metric2'
            ).properties(height=50,width=150)

alt.hconcat(chart_m1,chart_m2).resolve_legend(color='independent').configure_view(stroke=None)

 

 但是图例同一颜色的图例重复了,造成混淆。使用.resolve_legend(color='independent')没有用。

目标是每个图只显示跟它相关的legend,如下:

解决方法:.resolve_scale(color='independent')

alt.hconcat(
    chart_m1, chart_m2
).resolve_scale(
    color='independent'
).configure_view(
    stroke=None
)

来源:python - How to display two different legends in hconcat chart using altair - Stack Overflowicon-default.png?t=M3K6https://stackoverflow.com/questions/60328943/how-to-display-two-different-legends-in-hconcat-chart-using-altair

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值