【问题标题】:Matplotlib markers which plot and render fastMatplotlib 标记,可快速绘制和渲染
【发布时间】:2016-06-17 18:19:54
【问题描述】:

我正在使用 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。

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

【问题讨论】:

  • '-''--' 将绘制线条,而不是标记,所以这可能是区别

标签: python matplotlib plot


【解决方案1】:

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

绘制约 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

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

【讨论】:

    猜你喜欢
    • 2017-07-28
    • 2022-06-13
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2010-09-13
    相关资源
    最近更新 更多