これを行うには、いくつかの方法があります。「最良の」アプローチは、プロットする線分の数に大きく依存します。
少数 (たとえば 10 個) の線分をプロットするだけの場合は、次のようにします。
import numpy as np
import matplotlib.pyplot as plt
def uniqueish_color():
"""There're better ways to generate unique colors, but this isn't awful."""
return plt.cm.gist_ncar(np.random.random())
xy = (np.random.random((10, 2)) - 0.5).cumsum(axis=0)
fig, ax = plt.subplots()
for start, stop in zip(xy[:-1], xy[1:]):
x, y = zip(start, stop)
ax.plot(x, y, color=uniqueish_color())
plt.show()
ただし、100 万の線分で何かをプロットしている場合、これを描くのは非常に遅くなります。その場合は、 を使用しLineCollection
ます。例えば
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
xy = (np.random.random((1000, 2)) - 0.5).cumsum(axis=0)
# Reshape things so that we have a sequence of:
# [[(x0,y0),(x1,y1)],[(x0,y0),(x1,y1)],...]
xy = xy.reshape(-1, 1, 2)
segments = np.hstack([xy[:-1], xy[1:]])
fig, ax = plt.subplots()
coll = LineCollection(segments, cmap=plt.cm.gist_ncar)
coll.set_array(np.random.random(xy.shape[0]))
ax.add_collection(coll)
ax.autoscale_view()
plt.show()
どちらの場合も、"gist_ncar" coloramp からランダムな色を描画しているだけです。ここでカラーマップを見てください (gist_ncar は約 2/3 です): http://matplotlib.org/examples/color/colormaps_reference.html