python - 当有大数据(很多点)要绘制时,如何固定seaborn的散点图?
问题描述
我发现当需要绘制大量数据点时,Python中的方法比R中的seaborn.scatterplot()
函数慢得多。geom_point
ggplot2
例如 Python( seaborn
) 中的相同数据:
sample_data = data.sample(10000)
ax = sns.scatterplot(data=sample_data, x="x", y="y", hue="cate")
在 R(· ggplot2
) 中:
sample_data <- data[sample(nrow(data),10000),]
p <- ggplot(sample_data,aes(x=x,y=y)) +
geom_point(aes(color=cate))
前者比后者慢得多。
我想知道是什么导致了效率的差异以及如何使效率seaborn
尽可能快ggplot
甚至更好?
为什么我不直接使用 R:我更喜欢 Python 的语法风格,并且我可以matplotlib
在绘图后进行更多自定义,seaborn
而ggplot
这样做可能不那么方便。
解决方案
要绘制“大数据”散点,我建议使用Plotly
library。它具有Scattergl
管理多达数十亿个数据点的功能。
这是一个包含 100.000 个数据点的示例:
import plotly.graph_objects as go
import numpy as np
N = 100000
r = np.random.uniform(0, 1, N)
theta = np.random.uniform(0, 2*np.pi, N)
fig = go.Figure(data=go.Scattergl(
x = r * np.cos(theta), # non-uniform distribution
y = r * np.sin(theta), # zoom to see more points at the center
mode='markers',
marker=dict(
color=np.random.randn(N),
colorscale='Viridis',
line_width=1
)
))
fig.show()
结果:
推荐阅读
- c# - 手动创建时 iText 7 pdf 签名无效
- database - 如何处理大型服务(如亚马逊)的大量交易?
- python - 如何将多个 xlxs 文件导入 python 中的多个数据框?不要连接它们
- c++ - 在 LeetCode 上搜索 2D 矩阵时的堆缓冲区溢出
- r - 有没有办法使用 Shiny 数据表使用 Excel 等公式进行计算?
- javascript - Eslint 无控制台规则通过 console.log();
- python - 如何在图书馆管理系统中发行和归还图书
- sql-server - ASP.NET Core MVC 创建 2 个数据库
- vue.js - 鼠标悬停功能不会切换
- python - FastAPI 文件上传到 S3