我注意到,当你绘图时,第一条线是蓝色的,然后是橙子的,然后是绿色的,等等。有什么方法可以访问这个颜色列表吗?我看过上百万篇关于如何更改颜色循环或访问迭代器的文章,但没有关于如何获取matplotlib默认循环的颜色列表。
fumotvh31#
在matplotlib版本>= 1.5中,可以打印rcParam,名为axes.prop_cycle:
rcParam
axes.prop_cycle
print(plt.rcParams['axes.prop_cycle'].by_key()['color']) # [u'#1f77b4', u'#ff7f0e', u'#2ca02c', u'#d62728', u'#9467bd', u'#8c564b', u'#e377c2', u'#7f7f7f', u'#bcbd22', u'#17becf']
或者,在python2中:
python2
print plt.rcParams['axes.prop_cycle'].by_key()['color']
在< 1.5的版本中,这被称为color_cycle:
color_cycle
print plt.rcParams['axes.color_cycle'] # [u'b', u'g', u'r', u'c', u'm', u'y', u'k']
请注意,默认颜色循环在2.0.0版中发生了更改http://matplotlib.org/users/dflt_style_changes.html#colors-in-default-property-cycle
1sbrub3j2#
通常,不需要从任何地方获取默认颜色循环,因为它是默认的,所以只需使用它就足够了。
import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) t = np.arange(5) for i in range(4): line, = ax.plot(t,i*(t+1), linestyle = '-') ax.plot(t,i*(t+1)+.3,color = line.get_color(), linestyle = ':') plt.show()
如果你想 * 使用 * 默认的颜色循环,当然有几个选项。
首先应该提到的是,"tab10"色彩Map表包含默认颜色循环中的颜色,您可以通过cmap = plt.get_cmap("tab10")获得它。因此,与上述等效的是
"tab10"
cmap = plt.get_cmap("tab10")
import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) t = np.arange(5) cmap = plt.get_cmap("tab10") for i in range(4): ax.plot(t,i*(t+1), color=cmap(i), linestyle = '-') ax.plot(t,i*(t+1)+.3,color=cmap(i), linestyle = ':') plt.show()
您也可以直接使用彩色循环仪cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']。这将给出循环中的颜色列表,您可以使用它来迭代。
cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']
import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) t = np.arange(5) cycle = plt.rcParams['axes.prop_cycle'].by_key()['color'] for i in range(4): ax.plot(t,i*(t+1), color=cycle[i], linestyle = '-') ax.plot(t,i*(t+1)+.3,color=cycle[i], linestyle = ':') plt.show()
CN
最后,CN表示法允许得到颜色周期的第N种颜色,color="C{}".format(i)。但这仅适用于前10种颜色(N in [0,1,...9])
N
color="C{}".format(i)
N in [0,1,...9]
import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) t = np.arange(5) for i in range(4): ax.plot(t,i*(t+1), color="C{}".format(i), linestyle = '-') ax.plot(t,i*(t+1)+.3,color="C{}".format(i), linestyle = ':') plt.show()
此处提供的所有代码生成相同的图。
fhg3lkii3#
我想谈谈Matplotlib的一个新发展。在之前的回答中我们读到最后,CN表示法允许得到颜色周期的第N种颜色color="C{}".format(i)。然而,这仅适用于前10种颜色(N in [0,1,...9])但
import numpy as np import matplotlib.pyplot as plt t = np.linspace(0,6.28, 629) for N in (1, 2): C0N, C1N = 'C%d'%(N), 'C%d'%(N+10) plt.plot(t, N*np.sin(t), c=C0N, ls='-', label='c='+C0N) plt.plot(t, N*np.cos(t), c=C1N, ls='--', label='c='+C1N) plt.legend() ; plt.grid() ; plt.show()
给
knpiaxh14#
如果你正在寻找一个快速的一行程序来获取matplotlib用于其线条的RGB颜色,这里是:
>>> import matplotlib; print('\n'.join([str(matplotlib.colors.to_rgb(c)) for c in matplotlib.pyplot.rcParams['axes.prop_cycle'].by_key()['color']])) (0.12156862745098039, 0.4666666666666667, 0.7058823529411765) (1.0, 0.4980392156862745, 0.054901960784313725) (0.17254901960784313, 0.6274509803921569, 0.17254901960784313) (0.8392156862745098, 0.15294117647058825, 0.1568627450980392) (0.5803921568627451, 0.403921568627451, 0.7411764705882353) (0.5490196078431373, 0.33725490196078434, 0.29411764705882354) (0.8901960784313725, 0.4666666666666667, 0.7607843137254902) (0.4980392156862745, 0.4980392156862745, 0.4980392156862745) (0.7372549019607844, 0.7411764705882353, 0.13333333333333333) (0.09019607843137255, 0.7450980392156863, 0.8117647058823529)
对于uint8:
import matplotlib; print('\n'.join([str(tuple(int(round(v*255)) for v in matplotlib.colors.to_rgb(c))) for c in matplotlib.pyplot.rcParams['axes.prop_cycle'].by_key()['color']])) (31, 119, 180) (255, 127, 14) (44, 160, 44) (214, 39, 40) (148, 103, 189) (140, 86, 75) (227, 119, 194) (127, 127, 127) (188, 189, 34) (23, 190, 207)
4条答案
按热度按时间fumotvh31#
在matplotlib版本>= 1.5中,可以打印
rcParam
,名为axes.prop_cycle
:或者,在
python2
中:在< 1.5的版本中,这被称为
color_cycle
:请注意,默认颜色循环在2.0.0版中发生了更改http://matplotlib.org/users/dflt_style_changes.html#colors-in-default-property-cycle
1sbrub3j2#
通常,不需要从任何地方获取默认颜色循环,因为它是默认的,所以只需使用它就足够了。
如果你想 * 使用 * 默认的颜色循环,当然有几个选项。
“tab10”色彩Map表
首先应该提到的是,
"tab10"
色彩Map表包含默认颜色循环中的颜色,您可以通过cmap = plt.get_cmap("tab10")
获得它。因此,与上述等效的是
颜色循环中的颜色
您也可以直接使用彩色循环仪
cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']
。这将给出循环中的颜色列表,您可以使用它来迭代。CN
表示法最后,
CN
表示法允许得到颜色周期的第N
种颜色,color="C{}".format(i)
。但这仅适用于前10种颜色(N in [0,1,...9]
)此处提供的所有代码生成相同的图。
fhg3lkii3#
CN表示法重温
我想谈谈Matplotlib的一个新发展。在之前的回答中我们读到
最后,
CN
表示法允许得到颜色周期的第N
种颜色color="C{}".format(i)
。然而,这仅适用于前10种颜色(N in [0,1,...9]
)但
给
knpiaxh14#
如果你正在寻找一个快速的一行程序来获取matplotlib用于其线条的RGB颜色,这里是:
对于uint8: