Matplotlib将我的矩阵a
的每列绘制成4列蓝色,黄色,绿色,红色。
然后,我只绘制矩阵a[:,1:4]
中的第二,第三,第四列。是否有可能使Matplotlib从默认值中忽略蓝色并从黄色开始(所以我的每一行都得到与之前相同的颜色)?
a = np.cumsum(np.cumsum(np.random.randn(7,4), axis=0), axis=1)
lab = np.array(["A","B","C","E"])
fig, ax = plt.subplots()
ax.plot(a)
ax.legend(labels=lab )
# plt.show()
fig, ax = plt.subplots()
ax.plot(a[:,1:4])
ax.legend(labels=lab[1:4])
plt.show()
答案 0 :(得分:6)
用于连续线的颜色是来自颜色循环仪的颜色。 为了跳过此颜色循环中的颜色,您可以调用
:=
完整的示例如下:
ax._get_lines.prop_cycler.next() # python 2
next(ax._get_lines.prop_cycler) # python 2 or 3
答案 1 :(得分:3)
为了跳过第一种颜色,我建议使用
获取当前颜色的列表plt.rcParams['axes.prop_cycle'].by_key()['color']
如this问题/答案中所示。然后使用以下方法设置当前轴的颜色循环:
plt.gca().set_color_cycle()
因此,您的完整示例将是:
a = np.cumsum(np.cumsum(np.random.randn(7,4), axis=0), axis=1)
lab = np.array(["A","B","C","E"])
colors = plt.rcParams['axes.prop_cycle'].by_key()['color']
fig, ax = plt.subplots()
ax.plot(a)
ax.legend(labels=lab )
fig1, ax1 = plt.subplots()
plt.gca().set_color_cycle(colors[1:4])
ax1.plot(a[:,1:4])
ax1.legend(labels=lab[1:4])
plt.show()
给出了:
答案 2 :(得分:2)
在致电ax.plot([],[])
之前,您可以拨打ax.plot(a[:,1:4])
的额外电话。
a = np.cumsum(np.cumsum(np.random.randn(7,4), axis=0), axis=1)
lab = np.array(["A","B","C","E"])
fig, ax = plt.subplots()
ax.plot(a)
ax.legend(labels=lab )
# plt.show()
fig, ax = plt.subplots()
ax.plot([],[])
ax.plot(a[:,1:4])
ax.legend(labels=lab[1:4])
plt.show()
答案 3 :(得分:1)
我的印象是你要确保每个colone都保持定义的颜色。为此,您可以创建一个颜色向量,以匹配要显示的每个列。您可以创建颜色矢量。 color = [" blue"," yellow"," green"," red"]
a = np.cumsum(np.cumsum(np.random.randn(7,4), axis=0), axis=1)
lab = np.array(["A","B","C","E"])
color = ["blue", "yellow", "green", "red"]
fig, ax = plt.subplots()
ax.plot(a, color = color)
ax.legend(labels=lab )
# plt.show()
fig, ax = plt.subplots()
ax.plot(a[:,1:4])
ax.legend(labels=lab[1:4], color = color[1:4])
plt.show()