如何在Python中的Altair分组条形图中添加不同的颜色?

问题描述 投票:0回答:1

这是一个《星球大战》数据库,我在 Altair 和 Genereted 方面制作了这个分组条形图,现在可以在列上产生粉丝对原始电影与前传的偏好,并在行上产生基于性别的分类。但是,我只能在“是”或“否”偏好中生成颜色区分。我想知道如何分别更改每个图表的颜色。例如 - 雄性可以是蓝色和橙色,雌性可以是绿色和红色等。

这是我的数据框在处理原始数据集后的样子,这是我在图表中作为“alpha”传递的数据框。

索引 风扇 性别 偏好 百分比
0 没有 原版三部曲偏好 0.354167
1 是的 原版三部曲偏好 0.645833
2 没有 原版三部曲偏好 0.308824
3 是的 原版三部曲偏好 0.691176
4 没有 前传偏好 0.313433
5 是的 前传偏好 0.686567
6 没有 前传偏好 0.193548
7 是的 前传偏好 0.806452

我在下面附上了我的图表代码 -

chart = alt.Chart(alpha).mark_bar(size = 15).encode(
        y = alt.Y('Do you consider yourself to be a fan of the Star Trek franchise?:N',
                  axis = alt.Axis(title = ''),
                  sort = 'descending'
                 ),
        x = alt.X('Percentage:Q', 
                  axis = None,
                  scale=alt.Scale(domain=[0, 1])
                 ),
        color = alt.Color('Do you consider yourself to be a fan of the Star Trek franchise?:N', 
                          legend = None, 
                          scale=alt.Scale(domain=domain, range=range_)
                         ),
     )
    text = chart.mark_text(
                align = 'left',
                baseline = 'middle',
                dx = 5,
                color = '#4da74a'
            ).encode(
                text = alt.Text('Percentage:Q', format = '.0%') 
            )

    result = alt.layer(
                    chart, text, data = alpha
                ).facet(
                    row = alt.Row('Gender:N', title = None, sort = 'descending'),
                    column = alt.Column('Preference:N', title = None)
                ).configure(
                    background = '#f0f0f0'
                ).configure_view(
                    stroke = None
                ).configure_axis(
                    labelFontSize = 12,
                    domainOpacity = 0.4,
                    labelColor = '#ababab',
                    labelOpacity = 1,
                    labelFontWeight = 600,
                    labelPadding = 5,
                    tickSize = 10,
                    tickColor = '#ababab',
                    tickOpacity = 1
                ).configure_title(
                    anchor = 'start',
                    fontSize = 25,
                    fontWeight = 700,
                    dy = -20,
                    subtitleColor = '#000000',
                    subtitleFontWeight = 600
                ).properties(
                    title = {"text":"Preference for Original Trilogy vs. Prequels",
                             "subtitle": "by Familiarity with Expanded Universe and Gender(Grouped Bar Chart)"}
    )
result

我尝试了一些配置方法,但似乎都不起作用。

python visualization altair
1个回答
0
投票

由于分面图表中男性和女性子图中的颜色对应于相同的变量级别(是/否),我认为没有一种轻松的方法可以改变它(并注意,有可能会令人困惑)相同变量级别的不同颜色)。作为解决方法,您可以创建一个新列,合并性别和粉丝列以及颜色(这可能是最简单的解决方案,因为您无论如何都不显示图例)。另一种解决方法是创建一个列,其中包含要使用的颜色的原始值,并根据文档的本节设置 .scale(None)

© www.soinside.com 2019 - 2024. All rights reserved.