除了手动之外,在Matplotlib中“暂停”、“恢复”和“重置”默认颜色循环的方法?

2024-06-08 18:51:08 发布

您现在位置:Python中文网/ 问答频道 /正文

Get default line colour cycle的回答非常有帮助,表明在1.5版左右有一个更改。在

我想知道是否有一种简单的方法来“暂停”、“恢复”和“重置”Matplotlib循环使用默认颜色的方式,而不需要手动实现。在

下面的例子不是一个很好的手动方法,但只是说明了如何使用假设的colorpause()colorresume(),和{}。在

colorpause, colorresume, colorreset illustration

def colorpause():
    global increment_me
    increment_me = False

def colorresume():
    global increment_me
    increment_me = True

def colorreset():
    global icolor
    icolor   = 0

import matplotlib.pyplot as plt

xx = [[0 + 0.1*d, 1 + 0.1*d] for d in range(20)]
y  = [1, 0]

if True:
    icolorz = []
    plt.figure()
    colorz       = plt.rcParams['axes.prop_cycle'].by_key()['color']
    increment_me = True
    icolor       = 0
    plt.subplot(2, 1, 1)
    for i, x in enumerate(xx):
        plt.plot(x, y, colorz[icolor], linewidth=2)
        icolorz.append(icolor)
        icolor += increment_me
        icolor = icolor%len(colorz)
        if i == 5:
            colorpause()
        if i == 10:
            colorresume()
        if i >=12 and not i%3:
            colorreset()
    plt.subplot(2, 1, 2)
    plt.plot(icolorz)
    plt.ylim(-0.5, 6.5)
    plt.title('color number used')
    plt.show()

Tags: 方法trueifdefplt手动globalme