matplotlib 中每个绘图的唯一绘图标记
·
问题:matplotlib 中每个绘图的唯一绘图标记
我有一个循环,在其中创建一些图,并且每个图都需要唯一的标记。我考虑创建返回随机符号的函数,并以这种方式在我的程序中使用它:
for i in xrange(len(y)):
plt.plot(x, y [i], randomMarker())
但我认为这种方式并不好。我需要这个只是为了区分图例上的图,因为图不能与线连接,它们必须只是点集。
解答
itertools.cycle将无限期地迭代列表或元组。这比为您随机选择标记的功能更可取。
Python 2.x
import itertools
marker = itertools.cycle((',', '+', '.', 'o', '*'))
for n in y:
plt.plot(x,n, marker = marker.next(), linestyle='')
Python 3.x
import itertools
marker = itertools.cycle((',', '+', '.', 'o', '*'))
for n in y:
plt.plot(x,n, marker = next(marker), linestyle='')
您可以使用它来生成这样的图(Python 2.x):
import numpy as np
import matplotlib.pyplot as plt
import itertools
x = np.linspace(0,2,10)
y = np.sin(x)
marker = itertools.cycle((',', '+', '.', 'o', '*'))
fig = plt.figure()
ax = fig.add_subplot(111)
for q,p in zip(x,y):
ax.plot(q,p, linestyle = '', marker=marker.next())
plt.show()

更多推荐

所有评论(0)