plotly:大量数据点

Posted

技术标签:

【中文标题】plotly:大量数据点【英文标题】:plotly: huge number of datapoints 【发布时间】:2018-02-14 05:00:23 【问题描述】:

我正在尝试使用 plotly 绘制具有大量数据点(2mm-3mm)的东西。

当我跑步时

py.iplot(fig, filename='test plot')

我收到以下错误:

Woah there! Look at all those points! Due to browser limitations, the Plotly SVG drawing functions have a hard time graphing more than 500k data points for line charts, or 40k points for other types of charts. Here are some suggestions:
(1) Use the `plotly.graph_objs.Scattergl` trace object to generate a WebGl graph.
(2) Trying using the image API to return an image instead of a graph URL
(3) Use matplotlib
(4) See if you can create your visualization with fewer data points

If the visualization you're using aggregates points (e.g., box plot, histogram, etc.) you can disregard this warning.

然后我尝试用这个来保存它:

py.image.save_as(fig, 'my_plot.png')

然后我得到这个错误:

PlotlyRequestError: Unknown Image Server Error

我该如何正确地做到这一点?我不在乎它是静态图像还是笔记本中的交互式显示。

【问题讨论】:

你在生成什么样的情节?对于散点图,请尝试使用scattergl 现在,正在尝试做密度图。 【参考方案1】:

一个选项是对您的数据进行下采样,不确定您是否愿意: https://github.com/devoxi/lttb-py

我也有大数据集的浏览器中的 plotly 问题 - 如果有人有解决方案,请写! 谢谢!

【讨论】:

将 LTTB 支持集成到 plotly 中存在一个未解决的问题,似乎不是优先事项:github.com/plotly/plotly.js/issues/560 这仅适用于线性数据、时间序列。如果你有其他类型的数据,它可能会给出一个非常错误的结果!【参考方案2】:

Plotly 在这方面似乎真的很糟糕。我只是想创建一个具有 500 万个点的箱线图,这在简单的 R 函数“箱线图”中没有问题,但 plotly 正在为此无休止地计算。

改善这一点应该是一个主要问题。并非所有数据都必须保存(并显示)在 plotly 对象中。这是我猜的主要问题。

【讨论】:

【参考方案3】:

您可以尝试render_mode 参数。示例:

import plotly.express as px
import pandas as pd
import numpy as np

N = int(1e6) # Number of points

df = pd.DataFrame(dict(x=np.random.randn(N),
                       y=np.random.randn(N)))

fig = px.scatter(df, x="x", y="y", render_mode='webgl')
fig.update_traces(marker_line=dict(width=1, color='DarkSlateGray'))
fig.show()

在我的电脑N=1e6 大概需要5秒左右才能看到剧情,“交互性”还是很不错的。使用N=10e6 大约需要 1 分钟,并且绘图不再响应(即缩放、平移或其他任何操作都非常慢)。

【讨论】:

以上是关于plotly:大量数据点的主要内容,如果未能解决你的问题,请参考以下文章

在列中选择大量数据点

Matlab画图实现数据可视化

[原创.数据可视化系列之三]使用Ol3加载大量点数据

Mysql 结合大量数据分享一些查询优化点

在关系数据库中存储大量点(x,y,z)

使用 OpenGL 在 C++ 中绘制具有大量数据点的散点图的最佳方法