我正在可视化一个包含400K到2.5M个点的散点图。在绘制之前,我预计需要进行下采样,但为了查看情况,我使用plotly express对400k个数据集进行了试验,结果图表很快、漂亮且响应迅速。
为了创建交互式图表,我需要使用plotly.graph_objects,因为我需要使用不同颜色比例的多个轨迹。所以,我使用graph_objects画了基本相同的图表,但它不仅慢,而且还导致了电脑崩溃。
我希望尽可能少地进行下采样,并对这两种方法之间的性能差异感到惊讶,因此我想问:
为什么会有如此大的性能差异?是否可以更改graph_objects中的布局/图形/其他参数来缩小差距?
以下是一个代码片段,展示了我所说的基本相同的图表:
graph_objects
fig = go.Figure()
fig.add_trace(go.Scatter(x = x_values, y = y_values, opacity = opacity, marker = {
'size': size,
'color': community,
'colorscale': colorscale
}))
express
pacmap_map = px.scatter(x = x_values, y = y_values, color_continuous_scale=colorscale, opacity = opacity, color = community)
pacmap_map.update_traces(marker = {
'size': size
})
我本来预计表现应该要么相同,要么至少在同一范围内,但是express运作得非常好,而graph_objects却导致jupyter内核崩溃以及IDE的崩溃,这造成了很大的差异。