Matplotlib标记绘制和快速绘制

时间:2016-03-04 05:47:27

标签: python matplotlib plot

我正在使用matplotlib绘制5套约。每个400,000个数据点。尽管每组点都以不同的颜色绘制,但我需要不同的标记,以便人们在黑白打印输出图表。我面临的问题是http://matplotlib.org/api/markers_api.html文档中几乎所有可能的标记都需要花费太多时间来显示和绘制。我只能找到两个快速绘制和渲染的标记,分别是' - '和' - '。这是我的代码:

plt.plot(series1,'--',label='Label 1',lw=5)
plt.plot(series2,'-',label='Label 2',lw=5)
plt.plot(series3,'^',label='Label 3',lw=5)
plt.plot(series4,'*',label='Label 4',lw=5)
plt.plot(series5,'_',label='Label 5',lw=5)

我尝试了多个标记。系列1和系列2快速绘制并立即渲染。但是系列3,4和5将永远用于绘制和AGES来显示。

我无法弄清楚这背后的原因。有人知道更多标记可以快速绘制和渲染吗?

1 个答案:

答案 0 :(得分:2)

前两个('--''-')是线条而不是标记。这就是为什么它们渲染得更快。

绘制~400,000个标记是没有意义的。你将无法看到所有这些...但是,你能做的只是绘制一个点的子集。 因此,添加包含所有数据的行(即使您可能也可以对其进行二次采样),然后添加仅包含标记的第二个“行”。 为此你需要一个“x”向量,你也可以进行二次抽样:

# define the number of markers you want
nrmarkers = 100

# define a x-vector
x = np.arange(len(series3))
# calculate the subsampling step size
subsample = int(len(series3) / nrmarkers)
# plot the line
plt.plot(x, series3, color='g', label='Label 3', lw=5)
# plot the markers (using every `subsample`-th data point)
plt.plot(x[::subsample], series3[::subsample], color='g', 
        lw=5, linestyle='', marker='*')

# similar procedure for series4 and series5

注意:代码是从头开始编写的,未经过测试