您的位置:

探索数据可视化神器glueviz

一、简介

Glueviz是一种交互式的可视化软件,对于探索和分析多维数据具有非常强大的功能。它支持各种数据格式,如FITS和CSV等,可让用户轻松地创建数据集,访问和可视化它们,并快速生成复杂的可视化图表。

二、使用glueviz探索数据

首先,我们需要了解如何使用glueviz来探索数据集。在载入数据集时,glueviz将数据集作为不同的数据集视图显示在窗口中,可以切换不同的视图并可视化它们。例如,展示一个FITS文件,其包含了不同的表,每个表对应一个数据集:

    import glue_jupyter as gj
    from astropy.io import fits

    hdulist = fits.open('data.fits')
    table1 = hdulist[1].data
    table2 = hdulist[2].data

    app = gj.jglue()
    app.add_data(table1, label='Table 1')
    app.add_data(table2, label='Table 2')
    app

通过上面的代码,我们可以看到在glueviz生成的界面中打开了两个视图,分别是“Table 1”和“Table 2”。用户可以通过点击不同的视图,来分析和挖掘数据。

三、通过可视化研究数据

Glueviz最有用的功能是可视化研究数据。除了在常见的2D或3D空间中进行可视化之外,它还可以将数据映射到颜色、大小、形状等视觉属性上,从而观察数据集中更多的细节。例如,我们可以使用table1中的“位置X”和“位置Y”列创建一个散点图:

    scat = app.scatter2d('Table 1.PositionX', 'Table 1.PositionY')
    scat.style.size = 'Table 1.Flux'

上面的代码部分中,“Flux”列决定了散点的大小。颜色、形状和其他视觉属性也可以用同样的方法控制。

四、自定义数据可视化工具

Glueviz还支持用户自定义可视化工具,这意味着用户可以创建自己的可视化脚本文件,并与glueviz集成。这种自定义工具非常适合特定的数据需求,可以大大提高效率和灵活性。例如,我们可以创建一个名为“my_vis.py”的文件,其中包含以下代码:

    from glue.config import viewer_tool
    from glue.plugins.tools import ScatterTool
    from glue.viewers.scatter.qt import ScatterWidget

    class MyScatter(ScatterTool):
        icon = 'myicon.png'
        tool_id = 'my_scatter'
        tool_name = 'My Scatter'
    
        def __init__(self, viewer):
            super(MyScatter, self).__init__(viewer)
            self.mode = 'xy'
            self.viewer = viewer
            self.widget = ScatterWidget(viewer.state)

    viewer_tool(MyScatter)

然后,我们可以把“my_vis.py”导入glueviz,并使用My Scatter工具来探索数据集:

    import my_vis
    app = gj.jglue()
    app.add_data(table1, label='Table 1')
    app.add_data(table2, label='Table 2')
    app.choose_widget('My Scatter')

通过上面的代码我们可以使用“My Scatter”工具在glueviz中执行数据探索。

五、与Python交互的命令行窗口

Glueviz内置有一个强大的命令行窗口,用户可以在此窗口中使用Python脚本与glueviz进行交互。正如我们之前所演示的,可以在此处导入自定义脚本所需的程序库并在窗口中执行自己的Python脚本,以与数据集交互。

例如,以下代码展示了如何在命令行窗口中查找给定范围内的所有点:

    scatter_widget = app.scatter2d('Table 1.PositionX', 'Table 1.PositionY')
    mask = (table1['PositionX'] >= 0) & (table1['PositionX'] <= 100) &
           (table1['PositionY'] >= 0) & (table1['PositionY'] <= 100)
    indices = np.where(mask)[0]
    scatter_widget.mark_selected(indices)

在以上代码中,我们先通过Scatter2d将数据集可视化,然后将代码移动到命令行窗口中。通过使用Python中的布尔运算符,我们可以筛选出在给定范围内的点,然后使用mark_selected在可视化窗口中标记选定的点。

六、小结

总结来说,glueviz是一种非常实用的数据可视化工具,它的强大功能可以帮助我们更好地理解和分析数据。探索数据集时,可以选择不同的视图,操作方便灵活。并且glueviz支持自定义可视化工具,以解决更特殊的需求。最后,内置的命令行窗口方便用户与Python脚本进行交互和执行。