• <tfoot id='dT6v3'></tfoot>
  • <small id='dT6v3'></small><noframes id='dT6v3'>

    <i id='dT6v3'><tr id='dT6v3'><dt id='dT6v3'><q id='dT6v3'><span id='dT6v3'><b id='dT6v3'><form id='dT6v3'><ins id='dT6v3'></ins><ul id='dT6v3'></ul><sub id='dT6v3'></sub></form><legend id='dT6v3'></legend><bdo id='dT6v3'><pre id='dT6v3'><center id='dT6v3'></center></pre></bdo></b><th id='dT6v3'></th></span></q></dt></tr></i><div id='dT6v3'><tfoot id='dT6v3'></tfoot><dl id='dT6v3'><fieldset id='dT6v3'></fieldset></dl></div>

      <bdo id='dT6v3'></bdo><ul id='dT6v3'></ul>

        <legend id='dT6v3'><style id='dT6v3'><dir id='dT6v3'><q id='dT6v3'></q></dir></style></legend>
      1. 海运-根据色调名称更改条形图颜色

        Seaborn - change bar color according to hue name(海运-根据色调名称更改条形图颜色)

              <tbody id='tCbVP'></tbody>
            <i id='tCbVP'><tr id='tCbVP'><dt id='tCbVP'><q id='tCbVP'><span id='tCbVP'><b id='tCbVP'><form id='tCbVP'><ins id='tCbVP'></ins><ul id='tCbVP'></ul><sub id='tCbVP'></sub></form><legend id='tCbVP'></legend><bdo id='tCbVP'><pre id='tCbVP'><center id='tCbVP'></center></pre></bdo></b><th id='tCbVP'></th></span></q></dt></tr></i><div id='tCbVP'><tfoot id='tCbVP'></tfoot><dl id='tCbVP'><fieldset id='tCbVP'></fieldset></dl></div>
            <tfoot id='tCbVP'></tfoot>

              <legend id='tCbVP'><style id='tCbVP'><dir id='tCbVP'><q id='tCbVP'></q></dir></style></legend>
                <bdo id='tCbVP'></bdo><ul id='tCbVP'></ul>

              • <small id='tCbVP'></small><noframes id='tCbVP'>

                1. 本文介绍了海运-根据色调名称更改条形图颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我使用seabornpandas从不同(但相关)的数据创建一些条形图。这两个数据集共享一个用作hue的公共类别,因此,我希望确保这两个图表中此类别的条形图颜色匹配。我该怎么做呢?

                  基本示例如下:

                  import seaborn as sns
                  import pandas as pd
                  import matplotlib.pyplot as plt
                  sns.set_style('darkgrid')
                  fig, ax = plt.subplots()
                  
                  a = pd.DataFrame({'Program': ['A', 'A', 'B', 'B', 'Total', 'Total'],
                                    'Scenario': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
                                    'Duration': [4, 3, 5, 4, 9, 7]})
                  
                  g = sns.barplot(data=a, x='Scenario', y='Duration',
                                  hue='Program', ci=None)
                  plt.tight_layout()
                  plt.savefig('3 progs.png')
                  
                  plt.clf()
                  
                  b = pd.DataFrame({'Program': ['A', 'A', 'B', 'B', 'C', 'C', 'Total', 'Total'],
                                    'Scenario': ['X', 'Y', 'X', 'Y', 'X', 'Y', 'X', 'Y'],
                                    'Duration': [4, 3, 5, 4, 3, 2, 12, 9]})
                  
                  g = sns.barplot(data=b, x='Scenario', y='Duration',
                                  hue='Program', ci=None)
                  plt.tight_layout()
                  plt.savefig('4 progs.png')
                  

                  生成两个图表:

                  在此示例中,我希望确保Total类别在两个图表中使用相同的颜色(例如黑色)

                  推荐答案

                  A.使用颜色列表

                  要确保两个绘图中相同类别的颜色相同,最简单的解决方案是在创建绘图时手动指定颜色。

                  # First bar plot
                  ax = sns.barplot(data=a, x='Scenario', y='Duration',
                                   hue='Program', ci=None, palette=["C0", "C1", "k"])
                  
                  # ...
                  # Second bar plot
                  ax2 = sns.barplot(data=b, x='Scenario', y='Duration',
                                    hue='Program', ci=None, palette=["C0", "C1", "C2", "k"])
                  

                  颜色"C2"(颜色周期的第三种颜色)仅出现在存在程序C的第二个绘图中。

                  B.使用词典

                  您也可以使用字典代替列表,将hue列中的值映射到颜色。

                  palette ={"A": "C0", "B": "C1", "C": "C2", "Total": "k"}
                  
                  ax = sns.barplot(data=a, x='Scenario', y='Duration', hue='Program', palette=palette)
                  # ...
                  ax2 = sns.barplot(data=b, x='Scenario', y='Duration', hue='Program', palette=palette)
                  

                  在这两种情况下,输出将如下所示:

                  C.自动词典

                  最后,您可以根据hue列中的值自动创建此字典。这样做的好处是,您既不需要事先知道各个数据帧中的颜色,也不需要知道它们的值。

                  import seaborn as sns
                  import pandas as pd
                  import matplotlib.pyplot as plt
                  sns.set_style('darkgrid')
                  fig, ax = plt.subplots()
                  
                  a = pd.DataFrame({'Program': ['A', 'A', 'B', 'B', 'Total', 'Total'],
                                    'Scenario': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
                                    'Duration': [4, 3, 5, 4, 9, 7]})
                  b = pd.DataFrame({'Program': ['A', 'A', 'B', 'B', 'C', 'C', 'Total', 'Total'],
                                    'Scenario': ['X', 'Y', 'X', 'Y', 'X', 'Y', 'X', 'Y'],
                                    'Duration': [4, 3, 5, 4, 3, 2, 12, 9]})
                  
                  unique = a["Program"].append(b["Program"]).unique()
                  palette = dict(zip(unique, sns.color_palette(n_colors=len(unique))))
                  palette.update({"Total":"k"})
                  
                  ax = sns.barplot(data=a, x='Scenario', y='Duration',
                                   hue='Program', ci=None, palette=palette)
                  plt.tight_layout()
                  plt.figure()
                  
                  ax2 = sns.barplot(data=b, x='Scenario', y='Duration',
                                    hue='Program', ci=None,  palette=palette)
                  plt.tight_layout()
                  plt.show()
                  

                  这篇关于海运-根据色调名称更改条形图颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)
                  Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)
                  Is there a way of group by month in Pandas starting at specific day number?( pandas 有从特定日期开始的按月分组的方式吗?)
                  Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)
                  Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)
                  Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)
                      <tbody id='tqVtT'></tbody>

                          <bdo id='tqVtT'></bdo><ul id='tqVtT'></ul>

                          <small id='tqVtT'></small><noframes id='tqVtT'>

                          <i id='tqVtT'><tr id='tqVtT'><dt id='tqVtT'><q id='tqVtT'><span id='tqVtT'><b id='tqVtT'><form id='tqVtT'><ins id='tqVtT'></ins><ul id='tqVtT'></ul><sub id='tqVtT'></sub></form><legend id='tqVtT'></legend><bdo id='tqVtT'><pre id='tqVtT'><center id='tqVtT'></center></pre></bdo></b><th id='tqVtT'></th></span></q></dt></tr></i><div id='tqVtT'><tfoot id='tqVtT'></tfoot><dl id='tqVtT'><fieldset id='tqVtT'></fieldset></dl></div>
                          <tfoot id='tqVtT'></tfoot>
                        • <legend id='tqVtT'><style id='tqVtT'><dir id='tqVtT'><q id='tqVtT'></q></dir></style></legend>