Glue is a python project to link visualizations of scientific datasets across many files.

Overview

Azure Status Coverage Status DOI User mailing list Developer mailing list

Glue

Glue is a python project to link visualizations of scientific datasets across many files. Click on the image for a quick demo:

Glue demo

Features

  • Interactive, linked statistical graphics of multiple files.
  • Support for many file formats including common image formats (jpg, tiff, png), ascii tables, astronomical image and table formats (fits, vot, ipac), and HDF5. Custom data loaders can also be easily added.
  • Highly scriptable and extendable.

Installation

For installation documentation, visit glueviz.org.

Contributing

If you are interested in contributing to glue, please read our Code of Conduct and Contribution Guidelines.

Support

Please report problems to [email protected], or open an issue.

License

Glue is licensed under the BSD License.

Comments
  • Fix bug when chunking large arrays with a subset defined

    Fix bug when chunking large arrays with a subset defined

    Description

    We were running into a bug for large cubes in Jdaviz, where we couldn't retrieve the collapsed spectrum if the cube was above a certain size (above n_chunk_max in compute_statistic as it turned out). I'm not sure if this is the best fix, but it works to avoid the broadcast error we were encountering on line 1689 where there was an array size mismatch with a RangeSubsetState defined and number of array elements > n_chunk_max.

    opened by rosteen 36
  • Generalize data sources/importers

    Generalize data sources/importers

    In the same way that we can have plug-in exporters, it would be nice to have plug-in imports that can bring up different or additional dialogs. Examples include:

    • An additional dialog for e.g. FITS files which can allow one to select the HDU
    • A dialog instead of the 'open file' which could get data from online sources (e.g. dataverse, Vizier, etc)

    This would open up all kinds of new fun ways to bring data into glue. All these could be developed as plugins of course, and wouldn't clutter up the main code base.

    enhancement 
    opened by astrofrog 31
  • Implement Python 3 compatibility

    Implement Python 3 compatibility

    With these changes, Glue will at least install and launch, but when trying to select a subset I still get the error:

    Traceback (most recent call last):
      File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/backends/backend_qt4.py", line 261, in mouseReleaseEvent
        FigureCanvasBase.button_release_event( self, x, y, button )
      File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/backend_bases.py", line 1808, in button_release_event
        self.callbacks.process(s, event)
      File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/cbook.py", line 528, in process
        proxy(*args, **kwargs)
      File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/matplotlib/cbook.py", line 406, in __call__
        return mtd(*args, **kwargs)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/qt/mouse_mode.py", line 195, in release
        self._finish_roi(event)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/qt/mouse_mode.py", line 156, in _finish_roi
        self._roi_callback(self)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/qt/widgets/scatter_widget.py", line 99, in apply_mode
        return self.apply_roi(mode.roi())
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/qt/decorators.py", line 18, in result
        return func(*args, **kwargs)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/core/application_base.py", line 223, in apply_roi
        self._session.command_stack.do(cmd)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/core/command.py", line 98, in do
        result = cmd.do(self._session)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/core/command.py", line 224, in do
        self.client.apply_roi(self.roi)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/clients/scatter_client.py", line 255, in apply_roi
        mode.update(self._data, subset_state, focus_data=focus)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/core/edit_subset_mode.py", line 67, in update
        self._combine_data(data, new_state, add_if_empty=doadd)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/core/edit_subset_mode.py", line 35, in _combine_data
        data.edit_subset = data.new_subset()
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/core/data.py", line 610, in new_subset
        new_subset = Subset(self, color=color, label=label, **kwargs)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/core/subset.py", line 54, in __init__
        self.label = label  # trigger disambiguation
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/core/subset.py", line 228, in __setattr__
        object.__setattr__(self, attribute, value)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/core/subset.py", line 92, in label
        value = Registry().register(self, value, group=self.data)
      File "/Volumes/Raptor/Library/Python/3.3/lib/python/site-packages/Glue-0.1.0-py3.3.egg/glue/core/registry.py", line 69, in register
        has_obj = obj in reg
    TypeError: unhashable type: 'Subset'
    

    I don't quite understand yet why this would work in Python 2 but not Python 3.

    opened by astrofrog 31
  • Introduce container readers.

    Introduce container readers.

    In part thinking about issue #642 and in dealing with datasets with many FITS extensions, came up with a generic FITS loader.

    Haven't done tests/docs yet, but wanted to throw this out for thoughts and possibly becoming the default for FITS files.

    opened by stscieisenhamer 22
  • Tests do not run using 'python setup.py test'

    Tests do not run using 'python setup.py test'

    Tests run fine using the command

        py.test glue
    

    However, if trying with either

        ./runtests.py
        python setup.py test
    

    one will be greeted with a stack trace similar to the below.

        (glue)[user glue-repo]$ python setup.py test
        running test
        INTERNALERROR> Traceback (most recent call last):
        INTERNALERROR>   File "_pytest.main", line 68, in wrap_session
        INTERNALERROR>     config.pluginmanager.do_configure(config)
        INTERNALERROR>   File "_pytest.core", line 267, in do_configure
        INTERNALERROR>     config.hook.pytest_configure(config=self._config)
        INTERNALERROR>   File "_pytest.core", line 419, in __call__
        INTERNALERROR>     return self._docall(methods, kwargs)
        INTERNALERROR>   File "_pytest.core", line 430, in _docall
        INTERNALERROR>     res = mc.execute()
        INTERNALERROR>   File "_pytest.core", line 348, in execute
        INTERNALERROR>     res = method(**kwargs)
        INTERNALERROR>   File "/Users/eisenham/Documents/ssbdev/play/glue/glue-repo/glue/conftest.py", line 7, in pytest_configure
        INTERNALERROR>     if config.getoption('no_optional_skip'):
        INTERNALERROR> AttributeError: 'Config' object has no attribute 'getoption'
    
    opened by stscieisenhamer 22
  • Reorganize widgets and clients into individual folders?

    Reorganize widgets and clients into individual folders?

    At the moment, code for e.g. the histogram stuff is split into the client (in glue/clients) and the widget (in glue/qt/widgets). Of course, this separation makes sense in case we want to use different GUIs in future, but what I think might be easier to manage is something like this:

    glue/
        viewers/
            histogram/
                client.py
                qt.py
                histogram.ui
            image/
                ...
    

    i.e. to group the different viewers/widgets into individual folders and then inside that have a separation of the general glue client code, the qt code, and we can even add other front-ends in future, e.g. glue/viewers/histogram/web.py.

    In my opinion, this would be a step towards more modularity, but there may be reasons why we might not want to do that. @ChrisBeaumont, what do you think?

    If we agree something like this would be good, I can go ahead and open a PR with the changes.

    opened by astrofrog 21
  • Performance improvements for CompositeArray

    Performance improvements for CompositeArray

    This attempts to speed up CompositeArray by using several tricks:

    • When using colormaps, we don't need to care about layers below the top-most layer that has alpha=1 since it will block everything below - this should speed up viewers with multiple images open.
    • When using colormaps and assuming the colormaps don't have any transparency, we can avoid a bunch of temporary array creations.
    • We make use of out= in the contrast/bias and stretch to avoid more temporary array creation.
    opened by astrofrog 19
  • Error installing glueviz in Linux with Anaconda

    Error installing glueviz in Linux with Anaconda

    I tried the installation command suggested in the documentation: pythonw -m pip install glueviz but the command pythonw is not available (at least directly) in my version of Anaconda in Linux (Debian Jessie). When I try directly with pip install glueviz I got the following error:

    (...)
    copying glue/qt/ui/subset_facet.ui -> build/lib/glue/qt/ui
    
    running install_lib
    
    Traceback (most recent call last):
    
      File "<string>", line 1, in <module>
    
      File "/tmp/pip-build-mp42hW/glueviz/setup.py", line 67, in <module>
    
        package_data={'': ['*.png', '*.ui']}
    
      File "/home/jsm/programs/soft/anaconda/lib/python2.7/distutils/core.py", line 151, in setup
    
        dist.run_commands()
    
      File "/home/jsm/programs/soft/anaconda/lib/python2.7/distutils/dist.py", line 953, in run_commands
    
        self.run_command(cmd)
    
      File "/home/jsm/programs/soft/anaconda/lib/python2.7/distutils/dist.py", line 972, in run_command
    
        cmd_obj.run()
    
      File "/usr/lib/python2.7/dist-packages/setuptools/command/install.py", line 61, in run
    
        return orig.install.run(self)
    
      File "/home/jsm/programs/soft/anaconda/lib/python2.7/distutils/command/install.py", line 575, in run
    
        self.run_command(cmd_name)
    
      File "/home/jsm/programs/soft/anaconda/lib/python2.7/distutils/cmd.py", line 326, in run_command
    
        self.distribution.run_command(command)
    
      File "/home/jsm/programs/soft/anaconda/lib/python2.7/distutils/dist.py", line 971, in run_command
    
        cmd_obj.ensure_finalized()
    
      File "/home/jsm/programs/soft/anaconda/lib/python2.7/distutils/cmd.py", line 109, in ensure_finalized
    
        self.finalize_options()
    
      File "/usr/lib/python2.7/dist-packages/setuptools/command/install_lib.py", line 16, in finalize_options
    
        self.set_undefined_options('install',('install_layout','install_layout'))
    
      File "/home/jsm/programs/soft/anaconda/lib/python2.7/distutils/cmd.py", line 302, in set_undefined_options
    
        getattr(src_cmd_obj, src_option))
    
      File "/home/jsm/programs/soft/anaconda/lib/python2.7/distutils/cmd.py", line 105, in __getattr__
    
        raise AttributeError, attr
    
    AttributeError: install_layout
    
    ----------------------------------------
    Cleaning up...
    

    Any idea of the origin of the error?

    opened by nudomarinero 19
  • More Python 3 fixes

    More Python 3 fixes

    This is a work in progress, and I am aiming to try and get the test suite to pass in Python 3.

    Related issues:

    • https://github.com/scikit-image/scikit-image/issues/1187
    • https://github.com/numpy/numpy/issues/5145
    • https://github.com/astropy/astropy/issues/3013

    (jeez, this is turning out to be quite the bug hunt)

    Python3 
    opened by astrofrog 18
  • Re-factoring Categorical ROI

    Re-factoring Categorical ROI

    As part of the effort @aak65 is doing implementing some Bio-glue features he's going to need a more robust ability to pass around ROIs and subsets that are based on categorical data in a way that's more robust then my approach before ... which was basically convert everything to numbers and hope it all worked out.

    This has all of the backings for the new ROI/Subset but I can't quite figure out where to fold it into the Historgram & Scatter viewers. My ideal situation would be after the user uses a Range-selector on an axis defined by a categorical component it would adjust the returned ROI accordingly. Any ideas on where I would find that logic? @ChrisBeaumont or @astrofrog

    Ready for final review 
    opened by JudoWill 17
  • Release 0.5?

    Release 0.5?

    @ChrisBeaumont - I think it would be good to have a new release since there are already a number of improvements since 0.4 (in particular full Python 3 support). Would you object to having a 0.5 release soon? I'd be happy to help with that - if you would like me to do it, just let me know if there is a specific workflow you have been following to carry out a release.

    By the way, looks like glueviz is now in the main conda package list now :)

    opened by astrofrog 16
  • Save session parameters (not session) to use with other datasets

    Save session parameters (not session) to use with other datasets

    Is your feature request related to a problem? Please describe it: I have a repetitive check that I need to perform on lots of different datasets which means I'm always repeating tasks to produce the same plots. The datasets have the same columns but obviously different data.

    Describe the solution you'd like: I'd like to be able to store the session parameters used to generate these plots so that I can apply them to a new dataset.

    Describe alternatives you've considered: The only alternative so far is re-doing all the plots for each new imported dataset.

    If it is not related to a problem--please describe the feature: Time saving

    Additional context: Add any other context or screenshots about the feature request here.

    enhancement 
    opened by Gabriel-p 0
  • 3D plots not able to show properly

    3D plots not able to show properly

    I installed via pip install glueviz pip install glue-wwt pip install PyQt5

    I tried conda install first but it always gets stuck at solving environment, so I had to use pip. When I try doing 3D scatter, the plot cannot show up properly, but instead shows something like a mirror of the entire glue window: IMG_1946

    By default the vispy version is 0.11.0, and the error messages are WARNING: Could not create NSOpenGLContext with shared context, falling back to unshared context. WARNING:vispy:Could not create NSOpenGLContext with shared context, falling back to unshared context. WARNING: Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x18d234e50> WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x18d234e50> WARNING: Traceback (most recent call last): ...... RuntimeError: Shader compilation error in GL_FRAGMENT_SHADER: WARNING: 0:3: extension 'GL_OES_element_index_uint' is not supported WARNING: 0:4: extension 'GL_OES_standard_derivatives' is not supported on line 1482: Invalid call of undeclared identifier 'CatRom' rgb = CatRom(u_font_atlas, u_font_atlas_shape, uv); WARNING:vispy:Traceback (most recent call last): ...... ERROR: Invoking <bound method SceneCanvas.on_draw of <SceneCanvas (PyQt5) at 0x7faa83371d00>> for DrawEvent ERROR:vispy:Invoking <bound method SceneCanvas.on_draw of <SceneCanvas (PyQt5) at 0x7faa83371d00>> for DrawEvent WARNING: Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7faa833a6100> WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7faa833a6100> ERROR: Invoking <bound method SceneCanvas.on_draw of <SceneCanvas (PyQt5) at 0x7faa83371d00>> repeat 2 ERROR:vispy:Invoking <bound method SceneCanvas.on_draw of <SceneCanvas (PyQt5) at 0x7faa83371d00>> repeat 2 WARNING: Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7faa833a6100> WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7faa833a6100> WARNING: Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7faa833a6100> WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7faa833a6100> ERROR: Invoking <bound method SceneCanvas.on_draw of <SceneCanvas (PyQt5) at 0x7faa83371d00>> repeat 4 ERROR:vispy:Invoking <bound method SceneCanvas.on_draw of <SceneCanvas (PyQt5) at 0x7faa83371d00>> repeat 4

    I tried installing vispy 0.9.6 and 0.10.0 instead. Then there's no error message anymore, just warnings, but the 3D plots are still not able to show.

    My python version is 3.10.6 (pip installed everything in /usr/local/lib/python3.10/site-packages), and my system is MacOS Monterey 12.6.

    bug glue.viewers viewer-scatter 
    opened by xiaohanzai 3
  • Dark Mode Improvement

    Dark Mode Improvement

    It would be great if in dark mode the "plot data here" background were black. I always make fake windows to block out that bright light, but inevitably am blinded by it when a window moves.

    enhancement glue.app layout 
    opened by andrew-saydjari 0
  • Pandas DataFrames with type == 'object' cannot be save/restored

    Pandas DataFrames with type == 'object' cannot be save/restored

    Describe the bug Pandas DataFrames created within glue and added to the data_collection manager may have columns of type 'object', which mean they cannot be save/restored by glue (glue.core.state._load_numpy calls np.load()without allow_pickle=True). This is generally not a problem when reading files using the Pandas data_factory (which converts columns), but does, for instance cause problems for datasets retrieved from external sources within a glue session.

    To Reproduce Steps to reproduce the behavior such as:

    1. Create a Pandas DataFrame within glue and add it to the data_collection. For instance, one might use the process described in the documentation
    df1 = DataFrame()
    df1['a'] = [1.2, 3.4, 2.9]
    df1['g'] = ['r', 'q', 's']
    dc['dataframe'] = df1
    
    1. Save Session (this new Data object will be stored as a numpy array within the session file since it did not come from an external file)
    2. Restore Session
    3. Get the following error:

    value error: 'Object arrays cannot be loaded when allow_pickle=False'

    Expected behavior Pandas objects created within glue should not break session files.

    We could simply add allow_pickle to np.load(), but perhaps this has undesired side effects?

    Details:

    • Operating System: MacOS 12.6
    • Python version Python 3.9
    • Glue version 1.6
    • How you installed glue: conda

    Additional context Sample session file attached: pandas_dataframe_session.glu.gz

    bug 
    opened by jfoster17 0
  • Categoricals in scatter

    Categoricals in scatter

    Allow Categorical Variables to be Used in Color and Size Scaling in Scatter viewer

    Description

    This allows scatter plot cmap and size scaling attributes to be a categorical. This does not include a qualitative color-map for categorical attributes (as proposed in #1689) and obviously the size scaling is, in general, not going to be very meaningful, but for a small number of categorical levels it helps makes the points distinct.

    An unresolved problem with this is that it might break glue-jupyter scatter plot because that does not consistently call ensure_numerical on the relevant attributes.

    opened by jfoster17 0
Releases(v1.6.0)
  • v1.6.0(Nov 3, 2022)

    What's Changed

    New Features

    • Implement linking support for all BaseCartesianData subclasses and fix bugs that caused hanging in image viewer by @astrofrog in https://github.com/glue-viz/glue/pull/2328
    • Add the ability to create one-to-one 'join_on_key'-type links to the GUI link editor by @jfoster17 in https://github.com/glue-viz/glue/pull/2313
    • Allow specifying visual attributes when creating subset by @Carifio24 in https://github.com/glue-viz/glue/pull/2333
    • Export color settings in matplotlib viewers by @Carifio24 in https://github.com/glue-viz/glue/pull/2322
    • Add support for PyQt6 and PySide6 (<6.4) to Qt backends by @astrofrog in https://github.com/glue-viz/glue/pull/2318

    Bug Fixes

    • Redraw empty histogram layer by @Carifio24 in https://github.com/glue-viz/glue/pull/2300
    • Apply foreground color to minor ticks by @Carifio24 in https://github.com/glue-viz/glue/pull/2305
    • Don't change labels when using log scale axes by @Carifio24 in https://github.com/glue-viz/glue/pull/2323
    • Fix bugs in BaseCartesianData.get_data for pixel and world component IDs by @astrofrog in https://github.com/glue-viz/glue/pull/2327
    • Don't change labels when using log x axis in histogram viewer by @Carifio24 in https://github.com/glue-viz/glue/pull/2325
    • Fix issue where matplotlib viewers using y log axes were not initialized correctly. by @Carifio24 in https://github.com/glue-viz/glue/pull/2324
    • Force line collection to always respect colormap by @Carifio24 in https://github.com/glue-viz/glue/pull/2299
    • Fix export to Python script to correctly use Coordinates or WCS in reference_data by @dhomeier in https://github.com/glue-viz/glue/pull/2335
    • Add a check for FITS files mistaken as ASCII to astropy_table_read for Python 3.11 compatibility by @dhomeier in https://github.com/glue-viz/glue/pull/2321

    Documentation

    • Removed mention of defunct viz packages in Available plugins by @pllim in https://github.com/glue-viz/glue/pull/2319
    • Add PyQt6 and PySide6 status to glue-deps information by @dhomeier in https://github.com/glue-viz/glue/pull/2338

    Other Changes

    • Require Python>=3.8 and PyQt5/PySide5>=5.14 by @astrofrog in https://github.com/glue-viz/glue/pull/2334
    • Performance improvements for CompositeArray by @astrofrog in https://github.com/glue-viz/glue/pull/2343

    Full Changelog: https://github.com/glue-viz/glue/compare/v1.5.0...v1.6.0

    Source code(tar.gz)
    Source code(zip)
A guide for using Bootstrap 5 classes in Dash Bootstrap Components V1

dash-bootstrap-cheatsheet This handy interactive cheatsheet makes it easy to use the Bootstrap 5 classes with your Dash app made with the latest versi

10 Dec 22, 2022
Visual Python is a GUI-based Python code generator, developed on the Jupyter Notebook environment as an extension.

Visual Python is a GUI-based Python code generator, developed on the Jupyter Notebook environment as an extension.

Visual Python 564 Jan 03, 2023
Application for viewing pokemon regional variants.

Pokemon Regional Variants Application Application for viewing pokemon regional variants. Run The Source Code Download Python https://www.python.org/do

Michael J Bailey 4 Oct 08, 2021
Flame Graphs visualize profiled code

Flame Graphs visualize profiled code

Brendan Gregg 14.1k Jan 03, 2023
A python script editor for napari based on PyQode.

napari-script-editor A python script editor for napari based on PyQode. This napari plugin was generated with Cookiecutter using with @napari's cookie

Robert Haase 9 Sep 20, 2022
Smarthome Dashboard with Grafana & InfluxDB

Smarthome Dashboard with Grafana & InfluxDB This is a complete overhaul of my Raspberry Dashboard done with Flask. I switched from sqlite to InfluxDB

6 Oct 20, 2022
The Spectral Diagram (SD) is a new tool for the comparison of time series in the frequency domain

The Spectral Diagram (SD) is a new tool for the comparison of time series in the frequency domain. The SD provides a novel way to display the coherence function, power, amplitude, phase, and skill sc

Mabel 3 Oct 10, 2022
This plugin plots the time you spent on a tag as a histogram.

This plugin plots the time you spent on a tag as a histogram.

Tom Dörr 7 Sep 09, 2022
Create animated and pretty Pandas Dataframe or Pandas Series

Rich DataFrame Create animated and pretty Pandas Dataframe or Pandas Series, as shown below: Installation pip install rich-dataframe Usage Minimal exa

Khuyen Tran 92 Dec 26, 2022
在原神中使用围栏绘图

yuanshen_draw 在原神中使用围栏绘图 文件说明 toLines.py 将一张图片转换为对应的线条集合,视频可以按帧转换。 draw.py 在原神家园里绘制一张线条图。 draw_video.py 在原神家园里绘制视频(自动按帧摆放,截图(win)并回收) cat_to_video.py

14 Oct 08, 2022
Some useful extensions for Matplotlib.

mplx Some useful extensions for Matplotlib. Contour plots for functions with discontinuities plt.contour mplx.contour(max_jump=1.0) Matplotlib has pro

Nico Schlömer 519 Dec 30, 2022
Cartopy - a cartographic python library with matplotlib support

Cartopy is a Python package designed to make drawing maps for data analysis and visualisation easy. Table of contents Overview Get in touch License an

1.2k Jan 01, 2023
Set of matplotlib operations that are not trivial

Matplotlib Snippets This repository contains a set of matplotlib operations that are not trivial. Histograms Histogram with bins adapted to log scale

Raphael Meudec 1 Nov 15, 2021
Draw tree diagrams from indented text input

Draw tree diagrams This repository contains two very different scripts to produce hierarchical tree diagrams like this one: $ ./classtree.py collectio

Luciano Ramalho 8 Dec 14, 2022
🎨 Python3 binding for `@AntV/G2Plot` Plotting Library .

PyG2Plot 🎨 Python3 binding for @AntV/G2Plot which an interactive and responsive charting library. Based on the grammar of graphics, you can easily ma

hustcc 990 Jan 05, 2023
Fractals plotted on MatPlotLib in Python.

About The Project Learning more about fractals through the process of visualization. Built With Matplotlib Numpy License This project is licensed unde

Akeel Ather Medina 2 Aug 30, 2022
📊 Charts with pure python

A zero-dependency python package that prints basic charts to a Jupyter output Charts supported: Bar graphs Scatter plots Histograms 🍑 📊 👏 Examples

Max Humber 54 Oct 04, 2022
An open-source tool for visual and modular block programing in python

PyFlow PyFlow is an open-source tool for modular visual programing in python ! Although for now the tool is in Beta and features are coming in bit by

1.1k Jan 06, 2023
2021 grafana arbitrary file read

2021_grafana_arbitrary_file_read base on pocsuite3 try 40 default plugins of grafana alertlist annolist barchart cloudwatch dashlist elasticsearch gra

ATpiu 5 Nov 09, 2022
Interactive Data Visualization in the browser, from Python

Bokeh is an interactive visualization library for modern web browsers. It provides elegant, concise construction of versatile graphics, and affords hi

Bokeh 17.1k Dec 31, 2022