小编Kri*_*öld的帖子

如何使用 altair 在 hconcat 图表中显示两个不同的图例

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

在此处输入图片说明

但是,即使 .resolve_legend(color='independent')我从顶部的两个图例中都显示了两个图表中的条目 - 这非常令人困惑。

结果应如下所示:

在此处输入图片说明

如何删除不需要的图例条目?或者,如果有人知道如何在单个 jupyterlab 单元中并排绘制图表的好方法,我很乐意采用不同的方法。

我的代码如下所示:

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', …
Run Code Online (Sandbox Code Playgroud)

python altair jupyter-lab

3
推荐指数
1
解决办法
1446
查看次数

标签 统计

altair ×1

jupyter-lab ×1

python ×1