Matplotlib:手动向axes.prop_cycle()中的默认颜色添加更多颜色?

Jan*_*Jan 2 python colors matplotlib python-2.7

我只是将样本增加到 12 个,发现axes.prop_cycle()默认情况下只有 10 种颜色(我认为是tab10。)。所以我得到了IndexError: list index out of range

我的简化代码。每个样本值都表示在矩阵的每一行中

matrix = np.random.randint(25, size=(12, 4))

for p in xrange(12):
  ax_eachp = plt.subplot2grid((protcount, 1), (p, 0), rowspan=1, colspan=1)
  ax_eachp.plot(matrix[p], color=colors[p])
Run Code Online (Sandbox Code Playgroud)

如果我想保留前 10 种颜色,我可以手动再添加 2 种颜色吗tab10?或者如何更改为其他定性彩色图

Imp*_*est 5

正如链接的问题Python Matplotlib/Basemap Color Cycling所示,您可以设置轴prop_cycle以包含您喜欢的颜色。

在这里,您可以使用 tab10 颜色并将另外两种颜色添加到要在prop_cycle.

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
colors = list(plt.cm.tab10(np.arange(10))) + ["crimson", "indigo"]
ax.set_prop_cycle('color', colors)

for i in range(12):
    ax.plot([0,1],[i,i])

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然而,由于在问题的情况下,你无论如何都会循环颜色,所以实际上不需要循环器。以下产生与上面相同的结果。

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
colors = list(plt.cm.tab10(np.arange(10))) + ["crimson", "indigo"]

for i in range(12):
    ax.plot([0,1],[i,i], color=colors[i])

plt.show()
Run Code Online (Sandbox Code Playgroud)