在 matplotlib 中绘制不同的颜色

新手上路,请多包涵

假设我有一个 for 循环并且我想绘制不同颜色的点:

 for i in range(5):
 plt.plot(x,y,col=i)

如何在 for 循环中自动更改颜色?

原文由 lord12 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 419
1 个回答

@tcaswell 已经回答了,但我正在输入我的答案,所以我会继续发布它……

有许多不同的方法可以做到这一点。首先, matplotlib 将自动循环显示颜色。默认情况下,它循环显示蓝色、绿色、红色、青色、品红色、黄色、黑色:

 import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 10)
for i in range(1, 6):
    plt.plot(x, i * x + i, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()

在此处输入图像描述

如果你想控制 matplotlib 循环使用哪些颜色,请使用 ax.set_color_cycle

 import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 10)
fig, ax = plt.subplots()
ax.set_color_cycle(['red', 'black', 'yellow'])
for i in range(1, 6):
    plt.plot(x, i * x + i, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()

在此处输入图像描述

如果您想明确指定将使用的颜色,只需将其传递给 color kwarg(接受 html 颜色名称,以及 rgb 元组和十六进制字符串):

 import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 10)
for i, color in enumerate(['red', 'black', 'blue', 'brown', 'green'], start=1):
    plt.plot(x, i * x + i, color=color, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()

在此处输入图像描述

最后,如果您想从 现有颜色 图中自动选择指定数量的颜色:

 import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 10)
number = 5
cmap = plt.get_cmap('gnuplot')
colors = [cmap(i) for i in np.linspace(0, 1, number)]

for i, color in enumerate(colors, start=1):
    plt.plot(x, i * x + i, color=color, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()

在此处输入图像描述

原文由 Joe Kington 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏