vaex - 如何更改 vaex 交互式 Jupyter bqplot plot_widget 中的点样式以使单个点更大且可见?
问题描述
我正在评估 vaex 中描述的交互式异常值选择用例:大图:~2000 万个样本,千兆字节的数据
基本上,我有一些单独的点是异常值,我想在图表上看到它们以手动选择它们并进一步检查它们。
问题是如果数据集的其余部分太大,单个点就会变得不可见。
如何使这些单独的点可见?
例如,如果我生成一个包含 10 亿个点且中心顶部有一个异常值的数据集:
import h5py
import numpy
size = 1000000000
with h5py.File('1b.hdf5', 'w') as f:
x = numpy.arange(size + 1)
x[size] = size / 2
f.create_dataset('x', data=x, dtype='int64')
y = numpy.arange(size + 1) * 2
y[size] = 3 * size / 2
f.create_dataset('y', data=y, dtype='int64')
z = numpy.arange(size + 1) * 4
z[size] = -1
f.create_dataset('z', data=z, dtype='int64')
然后在 Jupyter 笔记本上显示:
import vaex
df = vaex.open('1b.hdf5')
df.plot_widget(df.x, df.y, backend='bqplot')
我在 Jupyter 上得到了这个:
所以我看不到应该在中心顶部的异常值。
但是,我可以选择它,因为我知道它在哪里,并且它确实显示在selection=True
方法上。它只是没有显示出来。
有一些例子:https://vaex.readthedocs.io/en/latest/tutorial.html#Smaller-datasets-/-scatter-plot看起来很明显,但我尝试添加额外的参数c="red", alpha=0.5, s=4
,plot_widget
但它没有工作,大概这个后端不支持它们。
也许有一种方法可以配置bqplot
来改变它的绘图风格?
在 vaex 2.0.2 上测试。
解决方案
这可能是小部件的布局问题。看着顶部,我发现它似乎被剪掉了。但是,如果缩小,您应该能够看到它。
假设你这样做了,你可能不会看到太多,因为 vaex 的 plot_widget 不会绘制符号(否则它无法显示 10 亿个点),它会显示一个热图。
如果要查看低密度区域,可能需要显示在 log 中(通过 f='log',或者打开左侧的抽屉并选择它)。如果你在日志中显示,它为空的区域将是-inf,它将显示为透明。因此,您现在应该能够更轻松地看到“异常像素”,特别是如果您降低分辨率(通过 shape=128)。
使用这两个选项:
df.plot_widget(df.x, df.y, f='log', shape=128, backend='bqplot')
输出如下所示:
离群点在中心顶部变得清晰可见。
推荐阅读
- vue.js - Vue-Plyr 加载视频很慢
- windows - TensorFlow 在 Windows 上联合
- ios - 在 Swift 中根据 API 调用设置前景色
- rust - 无法分配给“self.input.cached_token”,因为它是借来的
- bash - 使用换行符或不使用换行符打印字符串序列
- node.js - VueJS 3/路由器/使用推送重定向:未捕获(承诺)类型错误:无法读取未定义的属性(读取“推送”)
- python - 如何覆盖 Outlook 日历事件
- python - ax.add_patch() 中的错误导致坐标缩放不一致/随机
- sparql - RDF4J 的 AST 是否允许 SPARQL 查询重写?
- python - 在数据帧行上应用具有多个操作的函数的有效方法