【发布时间】:2017-12-08 14:58:06
【问题描述】:
可以在matplotlib.pyplot 中使用基本图循环线条颜色:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_prop_cycle(plt.cycler('color', ['c', 'm', 'y', 'k']))
x = np.linspace(-1.0, 1.0, 50)
for f in [1.0, 2.0, 3.0, 4.0]:
ax.plot(x, np.sin(x * f))
plt.show()
这会导致每个部分正弦波图具有循环器列表中的下一种颜色,并且会根据需要进行换行:
我正在使用contour 绘图来绘制单个轮廓。对于每种情况,我想绘制一个轮廓,但我希望显示的颜色自动循环通过指定的调色板(这样我就可以显示一个可读的颜色编码图例)。不过ax.set_prop_cycle在这里似乎没有同样的效果:
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_prop_cycle(plt.cycler('color', ['c', 'm', 'y', 'k']))
x = np.linspace(-1.0, 1.0, 50)
y = np.linspace(-1.0, 1.0, 50)
z = np.zeros((len(x), len(y)))
# simple function to create useful contours:
def get_z(x, y, f):
for i, u in enumerate(x):
for j, v in enumerate(y):
z[i, j] = (f * u) ** 2 + (f * v) ** 2
return z
# plot for multiple values of `f`
for f in [1.0, 2.0, 3.0, 4.0]:
ax.contour(x, y, get_z(x, y, f), levels=[1], linewidth=2)
plt.show()
每个图(环)都有相同的颜色 - 它没有自动循环。我想让每个情节都有不同的颜色。我知道每个“完整”等高线图都会循环显示作为单个图的一部分绘制的每个等高线的颜色,但在我的情况下,我只是在固定“级别”上绘制单个等高线。
是否有一种相当简单的方法可以在不为每个图明确指定颜色的情况下做到这一点?我最终计划绘制动态数量的图,因此将它们全部指定并不实际,我需要在需要时将其环绕。
也许有一种方法可以设置或旋转等高线图的颜色图的起始偏移量?
【问题讨论】:
标签: python matplotlib plot colors