【问题标题】:change the number of colors in matplotlib stylesheets更改 matplotlib 样式表中的颜色数量
【发布时间】:2017-01-07 03:39:49
【问题描述】:

我正在使用 matplotlib 为出版物绘制多个图表,并且我需要它们都具有相同的样式。有些图表有超过 6 个类别,我注意到,默认情况下,它不会绘制超过 6 种不同的颜色。 7个或更多,我开始有重复的颜色。

例如

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
plt.style.use('seaborn-muted')

df2= pd.DataFrame(np.random.rand(10,8))
df2.plot(kind='bar',stacked=True)
plt.legend(fontsize=13,loc=1)
plt.show()

可能有一个认知原因不包括超过 6 种不同的颜色,但如果我需要,我该怎么做?我尝试了不同的样式表(seaborn、ggplot、classic)并且似乎都有相同的“限制”。

我需要更改颜色图/样式表吗?理想情况下,我想使用定性颜色图(我正在绘制的类别中没有顺序)并使用预先存在的颜色图......我不太擅长选择颜色。

谢谢!

【问题讨论】:

    标签: python matplotlib colormap


    【解决方案1】:

    默认情况下,matplotlib 将循环显示一系列六种颜色。如果您想更改默认颜色(或颜色数量),您可以使用cycler 循环显示您想要的颜色而不是默认颜色。

    from cycler import cycler
    
    % Change the default cycle colors to be red, green, blue, and yellow
    plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b', 'y']))
    

    demo here

    更好的方法是在您创建 plot 时手动指定绘图颜色,这样您制作的每个绘图都不必使用相同的颜色。

    plt.plot([1,2,3], 'r')
    plt.plot([4,5,6], 'g')
    plt.plot([7,8,9], 'b')
    plt.plot([10,11,12], 'y')
    

    或者你可以在创建后更改颜色

    h = plt.plot([1,2,3])
    h.set_color('r')
    

    【讨论】:

    • 请注意,传递给cycler() 的颜色列表可以是任意长度,也可以是matplotlib.colors 支持的任何格式。例如,我的matplotlibrc 中有这个:cycler("color", "348ABD, 7A68A6, A60628, 467821, CF4457, 188487, E24A33") - 蓝色、紫色、红色、绿色、粉色、绿松石色、橙色。十六进制颜色可能包含也可能不包含 # 哈希,并且可以是逗号分隔的字符串(如我的)或列表。您也可以使用X11 colors
    【解决方案2】:
    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    %matplotlib inline
    
    colors = plt.cm.jet(np.linspace(0, 1, 10))
    
    df2= pd.DataFrame(np.random.rand(10,8))
    df2.plot(kind='bar',color=colors, stacked=True)
    plt.legend(fontsize=13,loc=1)
    

    这基本上是从Plotting with more colors in matplotlib 复制而来的。查看colormap及其example page的文档。

    【讨论】:

    • 有效!因为我想要一个定性颜色图(jet 不是,并且严重不鼓励)我将其更改为“配对”matplotlib 中可用的定性颜色图之一matplotlib.org/users/colormaps.html
    猜你喜欢
    • 2020-12-23
    • 2021-01-07
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2016-10-29
    相关资源
    最近更新 更多