【问题标题】:matplotlib large set of colors for plotsmatplotlib 用于绘图的大量颜色
【发布时间】:2011-09-22 10:23:43
【问题描述】:

我想在一个图中绘制很多图表。我刚开始使用 matplotlib,找不到生成许多可区分颜色的好方法:( 也许在 HSV 上循环使用 SV 最多?

我正在考虑类似的事情

args=[]
for i,(x,y) in enumerate(data):
    args.extend([x,y,hsv(i)])
plot(*args)

有什么建议吗? :)

【问题讨论】:

    标签: python plot matplotlib


    【解决方案1】:

    我认为您的想法是正确的,只是如果您传递分布在 (0,1) 范围内的颜色图 hsv 数字,颜色会更容易区分:

    hsv = plt.get_cmap('hsv')
    hsv(float(i)/(len(data)-1))
    

    或者,使用 NumPy:

    colors = hsv(np.linspace(0, 1.0, len(kinds)))
    

    例如:

    import datetime as DT
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import scipy.interpolate as interpolate
    
    dates = [DT.date(year, 9, 1) for year in range(2003, 2009)]
    t = list(map(mdates.date2num, dates))
    jec = (100, 70, 125, 150, 300, 250)
    plt.plot(dates, jec, 'k.', markersize = 20)
    new_t = np.linspace(min(t), max(t), 80)
    new_dates = map(mdates.num2date, new_t)
    kinds = ('cubic', 'quadratic', 'slinear', 'nearest', 'linear', 'zero', 4, 5)
    cmap = plt.get_cmap('jet')
    colors = cmap(np.linspace(0, 1.0, len(kinds)))
    for kind, color in zip(kinds, colors):
        new_jec = interpolate.interp1d(t, jec, kind=kind)(new_t)
        plt.plot(new_t, new_jec, '-', label=str(kind), color=color)
    plt.legend(loc = 'best')
    plt.show()
    

    【讨论】:

    • 好的,我明白了。谢谢 :) 但是,我的 matplotlib 似乎确实知道 cm.jet (并且文档也不再提及它)。我现在在哪里可以找到它?
    • 您也可以使用plt.get_cmap('jet')。我也编辑了帖子以显示这一点。
    猜你喜欢
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2014-02-16
    • 1970-01-01
    • 2018-08-12
    • 2015-11-03
    • 2014-03-16
    相关资源
    最近更新 更多