【问题标题】:Using separate scales for each group in a grouped and stacked barplots in Altair在 Altair 的分组和堆叠条形图中为每个组使用单独的比例
【发布时间】:2020-04-29 00:15:36
【问题描述】:

我想在 Python 中使用 Altair 为分组和堆叠条形图中的每个组使用单独的比例。

所以例如而不是下面的

我想要类似于以下内容的内容。在这张(Gimp-)编辑的图片中,我对所有 4 组 A、B、C 和 D 具有相同的比例。但在我的实际数据中,数量级因组而异。所以每个组应该有不同的规模。关于如何做到这一点的任何想法?

这是来自HERE 的最小示例

import pandas as pd
import numpy as np
import altair as alt

df1=pd.DataFrame(10*np.random.rand(4,3),index=["A","B","C","D"],columns=["I","J","K"])
df2=pd.DataFrame(10*np.random.rand(4,3),index=["A","B","C","D"],columns=["I","J","K"])
df3=pd.DataFrame(10*np.random.rand(4,3),index=["A","B","C","D"],columns=["I","J","K"])

def prep_df(df, name):
    df = df.stack().reset_index()
    df.columns = ['c1', 'c2', 'values']
    df['DF'] = name
    return df

df1 = prep_df(df1, 'DF1')
df2 = prep_df(df2, 'DF2')
df3 = prep_df(df3, 'DF3')

df = pd.concat([df1, df2, df3])

chart = alt.Chart(df).mark_bar().encode(
    x=alt.X('c2:N', title=None),
    y=alt.Y('sum(values):Q', axis=alt.Axis(grid=False, title=None)),
    column=alt.Column('c1:N', title=None),
    color=alt.Color('DF:N', scale=alt.Scale(range=['#96ceb4', '#ffcc5c','#ff6f69']))
).configure_view(
    strokeOpacity=0    
)

chart.save("Power.svg")

【问题讨论】:

    标签: python pandas vega altair


    【解决方案1】:

    您可以通过添加图表来拥有独立的轴

    resolve_scale(y='independent')
    

    请注意,这本身可以让每个构面的 y 域限制调整为每个构面内的数据子集;您可以通过明确指定域限制使它们匹配。

    综合起来是这样的:

    alt.Chart(df).mark_bar().encode(
        x=alt.X('c2:N', title=None),
        y=alt.Y('sum(values):Q', axis=alt.Axis(grid=False, title=None), scale=alt.Scale(domain=[0, 25])),
        column=alt.Column('c1:N', title=None),
        color=alt.Color('DF:N', scale=alt.Scale(range=['#96ceb4', '#ffcc5c','#ff6f69']))
    ).configure_view(
        strokeOpacity=0    
    ).resolve_scale(
        y='independent'
    )
    

    【讨论】:

      猜你喜欢
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多