Fast data visualization and GUI tools for scientific / engineering applications

Overview

PyQtGraph

PyPi conda-forge Build Status CodeQL Status Documentation Status Total alerts Language grade: Python

A pure-Python graphics library for PyQt5/PyQt6/PySide2/PySide6

Copyright 2020 Luke Campagnola, University of North Carolina at Chapel Hill

http://www.pyqtgraph.org

PyQtGraph is intended for use in mathematics / scientific / engineering applications. Despite being written entirely in python, the library is fast due to its heavy leverage of numpy for number crunching, Qt's GraphicsView framework for 2D display, and OpenGL for 3D display.

Requirements

pyqtgraph has adopted NEP 29.

This project supports:

  • All minor versions of Python released 42 months prior to the project, and at minimum the two latest minor versions.
  • All minor versions of numpy released in the 24 months prior to the project, and at minimum the last three minor versions.
  • All minor versions of Qt 5 and Qt 6 currently supported by upstream Qt

Currently this means:

  • Python 3.7+
  • Qt 5.12-6.0
  • Required
    • PyQt5, PyQt6, PySide2 or PySide6
    • numpy 1.17+
  • Optional
    • scipy for image processing
    • pyopengl for 3D graphics
      • pyopengl on macOS Big Sur only works with python 3.9.1+
    • hdf5 for large hdf5 binary format support
    • colorcet for supplemental colormaps
    • cupy for CUDA-enhanced image processing
      • On Windows, CUDA toolkit must be >= 11.1

Qt Bindings Test Matrix

The following table represents the python environments we test in our CI system. Our CI system uses Ubuntu 20.04, Windows Server 2019, and macOS 10.15 base images.

Qt-Bindings Python 3.7 Python 3.8 Python 3.9
PySide2-5.12
PyQt5-5.12
PySide2-5.15
PyQt5-5.15
PySide6-6.0
PyQt6-6.0

Support

Installation Methods

  • From PyPI:
    • Last released version: pip install pyqtgraph
    • Latest development version: pip install git+https://github.com/pyqtgraph/[email protected]
  • From conda
    • Last released version: conda install -c conda-forge pyqtgraph
  • To install system-wide from source distribution: python setup.py install
  • Many linux package repositories have release versions.
  • To use with a specific project, simply copy the pyqtgraph subdirectory anywhere that is importable from your project.

Documentation

The official documentation lives at pyqtgraph.readthedocs.io

The easiest way to learn pyqtgraph is to browse through the examples; run python -m pyqtgraph.examples to launch the examples application.

Comments
  • If arrayToQPath uses connect=all, use a different construction for QPainterPath

    If arrayToQPath uses connect=all, use a different construction for QPainterPath

    It's been discussed that the QDataStream >> QPainterPath operationis a real bottle-neck in arrayToQPath. Here is a stack overflow post that points out that QDataStream >> QPainterPath operation is really slow.

    Taking a peak at what PythonQwt does, that project constructs an open QPolygonF and draw that. QPainterPath does have an addPolygon method, so we can generate a QPainterPath that is made up of a QPolygonF.

    Doing some testing on examples/MultiPlotSpeedTest.py shows a significant performance boost when doing this. This PR shows 35 fps while master branch is at 25 fps.

    This PR also incorporates a second optimization, it checks for NaN values on PlotCurveItem.updateData() instead of at arrayToQPath check, and allows for an optimization parameter to be passed to skip the NaN check which does cause a performance hit.

    So first thing, the function is largely lifted from PythonQwt, so huge thanks to that project for figuring out this optimization.

    ~Some caveats, this does not work w/ Qt6; so definitely not ready for merging.~ Works with Qt6 now.

    EDIT: on second thought, this NaN check might not be buying us anything... doesn't look like arrayToQPath is called any more often than PlotCurveItem.updateData... so we're just moving the calculation from one part of the library to another...

    opened by j9ac9k 61
  • Added UML class diagram to give overview of the most important classes

    Added UML class diagram to give overview of the most important classes

    As discussed in issue #848, a UML diagram that gives an overview of the most important classes can really help with understanding the PyQtGraph library.

    I created a diagram in PlantUML, as suggested. I therefore made this PR so that people have can access to the source file. I think it would be a useful addition to the documentation but I don't know where (and how) to add it. For now I just added it to the doc folder as uml_overview.txt. Feel free move it of course.

    The result is as follows. I'm curious to hear your feedback.

    uml_overview 06-commit-865991f

    docs sprint 
    opened by titusjan 56
  • Optimize makeARGB for ubyte images

    Optimize makeARGB for ubyte images

    This PR optimizes the channel reordering portion of makeARGB by using the conversion routines of QImage.

    It only optimizes for row major ubyte images and defers to the original code for the rest. Improvement in fps is measurable with VideoSpeedTest

    Would such a PR that optimizes for specific data types be acceptable? Tagging @outofculture

    opened by pijyoi 56
  • Add support for Qt5

    Add support for Qt5

    Are there any plans to add support for PyQt5?

    I see you've got a nice wrapper around the Qt imports to support PySide/PyQt4. I had hoped that would mean a simple copy-pasta PyQt4 > PyQt5 but unfortunately you get hit with errors elsewhere (QApplication now being in QWidgets for example).

    I can have a go at creating a PyQt5 fork in a branch and see how much I have to mangle it before it works, but I wanted to check nobody else was doing this first.

    opened by mfitzp 49
  • Avoid using ``np.linalg.inv()`` for transform inversion

    Avoid using ``np.linalg.inv()`` for transform inversion

    This fixes not only latency but high CPU usage when inverting a Qt transform matrix.

    There is a known recent issue in numpy pertaining to this: numpy/numpy/issues/17166

    I've ripped off the "hard coded" solution from that issue verbatim and using it has reduced both latency and CPU usage in pretty much all mouse related interaction with ViewBox. I'm happy to write up profiling and test code for this in case there are any doubts.

    There are even faster solutions inside the referenced issue that might be worth exploring as well; I know we have to keep py2 in mind but it might be worth some flag logic in this case since invertQTransform() seems to be used throughout ViewBox and GraphicsItem. This would explain why I'm seeing improvements outside my original use case (calling GraphicsObject.mapFromView() on label coordinates fed from the mouse).

    I also would like to benchmark using *np.ravel() to pass the matrix results to QtGui.QTransform() since I've done that with good results in QPicture() drawings and it should in theory be faster then the existing multiple element access.

    Update

    Commit that changed away from using the internal transform is a41d330 Relevant Qt bug reports are:

    • https://bugreports.qt.io/browse/QTBUG-52070
    • https://bugreports.qt.io/browse/QTBUG-8014
    • https://bugreports.qt.io/browse/QTBUG-8557
    • troublesome underlying function is https://doc.qt.io/qt-5/qtglobal.html#qFuzzyIsNull
    opened by goodboy 46
  • Implemented pColorMeshItem

    Implemented pColorMeshItem

    As discussed in the issue #1262 I proposed here a minimal implementation of an item mimicking the pcolormesh function of matplotlib. As I didn't know what to do to make the pull request valid I decided to make it as minimal as possible. I am willing to integrate it more into pyqtgraph if someone gives me some directions. In particular a I think a kind of pColorMeshWidget with axis and Histogram would be an excellent end result of this work.

    Fixes #146 Fixes #1262

    opened by edumur 45
  • experimental line drawing mode for thick lines

    experimental line drawing mode for thick lines

    Proof of concept using drawLines code from PlotSpeedTest.py. Drawing thick lines probably involves a polygon flood fill by Qt, which gets slower the more complicated the polygon gets. So the idea here is to draw many many short line segments. This has its own overhead but is far less than before.

    To see it in action in PlotSpeedTest.py, ~~check enableExperimental,~~ set to line width more than 1 ~~and check skipFiniteCheck.~~

    ~~It's only meant to support fully finite data.~~

    I don't use thick lines myself, so feel free to take over this PR.

    opened by pijyoi 43
  • Scatter Plot Improvements

    Scatter Plot Improvements

    • Fixes various bugs and performance issues.
    • Adds a hovering API to ScatterPlotItem which lets the user specify a separate style for the hovered points and show a tool tip containing information about them. A signal is also emitted during hovering.
    opened by lidstrom83 40
  • plots not showing with NaN

    plots not showing with NaN

    Short description

    Plotting data with np.nan results in an empty plot.

    Code to reproduce

    import numpy as np
    import pyqtgraph as pg
    
    data = np.random.normal(size=1000)
    data2 = np.random.normal(size=1000)
    data2[0] = np.nan
    
    pg.plot(data, title="no NaN")
    pg.plot(data2, title="one NaN")
    
    pg.QtGui.QApplication.exec_()
    

    Expected behavior

    Two plots with random data.

    Real behavior

    First plot shows as normal. Second plot is empty.

    An error occurred?
    Post the full traceback inside these 'code fences'!
    

    Tested environment(s)

    • PyQtGraph version: 0.11.0.dev0+ged6586c

    • Qt Python binding: PySide2 5.13.1 Qt 5.13.1

    • Python version: 3.7.3

    • NumPy version: 1.17.2

    • Operating system: Windows 10, x64

    • Installation method: python from python.org installer. numpy from pip. pyqtgraph from git and / "python setup.py install" in pyqtgraph directory

    • PyQtGraph version: 0.11.0.dev0+ged6586c

    • Qt Python binding: PySide2 5.13.1 Qt 5.13.1

    • Python version: 3.7.3

    • NumPy version: 1.17.2

    • Operating system: Centos 7

    • Installation method: python built from source. numpy from pip. pyqtgraph from git and / "python setup.py install" in pyqtgraph directory

    Additional context

    bug 
    opened by summoningdark 37
  • Adding TextItem to plot changes the axis range (appears on Ver. 0.11, the bug was not present on 0.10)

    Adding TextItem to plot changes the axis range (appears on Ver. 0.11, the bug was not present on 0.10)

    Now that I am migrating to Version 0.11, I have noticed an annoying problem that was not present on 0.10.

    When I add ArrowItem and TextItem to an existing plot, I get this:

    Ticks_wrong

    Whereas I would expect this (pyqtgraph ver. 0.10):

    Ticks_right

    I noticed that this happens only if I label the peaks by calling:

        def label_peaks(self, plot_wg2, pos_peaks, GLS = True, o_c = False, activity = False, MLP = False, DFT=False):
    
            if GLS == True and DFT == False and self.avoid_GLS_RV_alias.isChecked():
                x_peaks = pos_peaks[0][pos_peaks[0]>1.2]
                y_peaks = pos_peaks[1][pos_peaks[0]>1.2]
            else:
                x_peaks = pos_peaks[0]
                y_peaks = pos_peaks[1]
    
    
            if GLS == True:
                N_peaks = int(self.N_GLS_peak_to_point.value())
                if o_c == True:
                    log = self.radioButton_RV_o_c_GLS_period.isChecked()
                elif activity == True:
                    log = self.radioButton_act_GLS_period.isChecked()
                elif MLP == True:
                    log = self.radioButton_RV_MLP_period.isChecked()
                    N_peaks = int(self.N_MLP_peak_to_point.value())
                elif DFT == True:
                    log = self.radioButton_RV_WF_period.isChecked()
                    N_peaks = int(self.N_window_peak_to_point.value())
    
                else:
                    log = self.radioButton_RV_GLS_period.isChecked()
    
                type_per = "GLS"
            else:
                N_peaks = int(self.N_TLS_peak_to_point.value())
                log = False
                type_per = "TLS"
    
            if len(x_peaks) <  N_peaks:
                N_peaks = len(x_peaks)
                print("You have reached the maximum number of %s peaks."%type_per)
    
            for i in range(N_peaks):
    
                text_arrow = pg.TextItem("", anchor=(0.5,1.9))
    
                if log == True:
                    arrow = pg.ArrowItem(pos=(np.log10(x_peaks[i]), y_peaks[i]), angle=270)
                    text_arrow.setText('%0.2f d' % (x_peaks[i]))
                    text_arrow.setPos(np.log10(x_peaks[i]),y_peaks[i])
                    
                elif log == False and GLS == True:   
                    arrow = pg.ArrowItem(pos=(1/x_peaks[i], y_peaks[i]), angle=270)
                    text_arrow.setText('%0.2f d' % (x_peaks[i]))
                    text_arrow.setPos(1/x_peaks[i],y_peaks[i])
                    
                elif log == False and GLS == False: 
                    arrow = pg.ArrowItem(pos=(x_peaks[i], y_peaks[i]), angle=270)
                    text_arrow.setText('%0.2f d' % (x_peaks[i]))
                    text_arrow.setPos(x_peaks[i],y_peaks[i])
    
    
                plot_wg2.addItem(arrow)
                plot_wg2.addItem(text_arrow) 
    
    

    The "bug" appears only if I use TextItem. Adding ArrowItem behaves OK. So what changed w.r.t. version 0.10?

    opened by 3fon3fonov 36
  • change GroupParameterItem palette to address issue in darkmode on mac

    change GroupParameterItem palette to address issue in darkmode on mac

    This partially addresses #1958

    These changes will still need to be tested on windows/Linux.

    Group title colors were changed to the color of QPalette.TextRole but it could easily be changed back to the original in dark mode.

    Light unknown-1 Dark unknown-2

    opened by Wubbzi 35
  • AxisItem-based grid item

    AxisItem-based grid item

    The idea is to display the grid lines in a GridItem and not extend the AxisItems ticks.

    This PR attempts to fix #1606, which reports that tick labels never seem to be displayed just right, when the grid is enabled.

    Although the current PR seems to accomplish this, I am not quite happy with the current implementation:

    • I had troubles replicating the way how AxisItem calculates tick positions inside a GridItem. Therefore I just added the AxisItem objects to the GridItem and get the positions by calling the appropriate methods. Not nice but it works.
    • With this PR, the GridItem has been improved so that it gets the right tick positions from the corresponding AxisItems. However, it needs to be clarified if this approach shall be adopted altogether by AxisItem, without the need for users to manually create a GridItem.

    Therefore, I marked it as draft. I am happy to receive/discuss ideas how the current approach can be improved.

    Recently, #2385 was introduced that circumvents this problem, by hiding tick labels, when overlap even slightly the axis boundaries. Thus, the changes of this PR are only relevant if the style option 'hideOverlappingLabels' of all AxisItems are set to False.

    I think it is useful, to have the possibility, to show tick labels at the plotted range start and/or end, when the tick label positions exactly match the start and/or end coordinate. Afaik matplotlib also does this.

    Example to compare the behavior before and after

    import pyqtgraph as pg
    #pg.setConfigOption('background', 'w')
    #pg.setConfigOption('foreground', 'k')
    pg.setConfigOptions(antialias=True)
    from pyqtgraph.Qt import QtWidgets
    import numpy as np
    
    win = pg.GraphicsLayoutWidget(show=True)
    win.resize(800,350)
    win.setWindowTitle('pyqtgraph example: random points')
    plt1 = win.addPlot()
    plt2 = win.addPlot()
    
    # preset mouse mode to 1 button for quick testing
    #plt1.getViewBox().setMouseMode(pg.ViewBox.RectMode)
    #plt2.getViewBox().setMouseMode(pg.ViewBox.RectMode)
    
    # create data
    x = np.arange(100)
    y = np.random.normal(size=100)
    
    for ax in ('left', 'right', 'top', 'bottom'):
        plt1.getAxis(ax).setStyle(hideOverlappingLabels=False)
        plt2.getAxis(ax).setStyle(hideOverlappingLabels=False)
    
    plt1.plot(x, y)
    plt2.plot(x, y)
    
    plt1.setXLink(plt2)
    plt1.setYLink(plt2)
    
    plt1.showAxis('right', show=True)
    plt2.showAxis('right', show=True)
    plt1.showAxis('top', show=True)
    plt2.showAxis('top', show=True)
    
    plt1.showGrid(x=True, y=True)
    
    grid = pg.GridItem()
    grid.setTextPen(None)
    grid.setTickSpacing(x=[None, None], y=[None, None])
    plt1.addItem(grid)
    
    plt2.showGrid(x=True, y=True)
    
    QtWidgets.QApplication.instance().exec_()
    
    opened by swvanbuuren 0
  • Adding project MiniPTI to README

    Adding project MiniPTI to README

    README.md

    I'm using PyQtGraph for my GUI in the project MiniPTI on GitHub (as part from the EU project Passepartout) and would like to add it to the list of "who uses the library".

    https://github.com/bilaljo/MiniPTI

    opened by bilaljo 1
  • Bump sphinx from 5.3.0 to 6.1.1 in /doc

    Bump sphinx from 5.3.0 to 6.1.1 in /doc

    Bumps sphinx from 5.3.0 to 6.1.1.

    Release notes

    Sourced from sphinx's releases.

    v6.1.1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v6.1.0

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v6.0.1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v6.0.0

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v6.0.0b2

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    v6.0.0b1

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    Changelog

    Sourced from sphinx's changelog.

    Release 6.1.1 (released Jan 05, 2023)

    Bugs fixed

    • #11091: Fix util.nodes.apply_source_workaround for literal_block nodes with no source information in the node or the node's parents.

    Release 6.1.0 (released Jan 05, 2023)

    Dependencies

    Incompatible changes

    • #10979: gettext: Removed support for pluralisation in get_translation. This was unused and complicated other changes to sphinx.locale.

    Deprecated

    • sphinx.util functions:

      • Renamed sphinx.util.typing.stringify() to sphinx.util.typing.stringify_annotation()
      • Moved sphinx.util.xmlname_checker() to sphinx.builders.epub3._XML_NAME_PATTERN

      Moved to sphinx.util.display:

      • sphinx.util.status_iterator
      • sphinx.util.display_chunk
      • sphinx.util.SkipProgressMessage
      • sphinx.util.progress_message

      Moved to sphinx.util.http_date:

      • sphinx.util.epoch_to_rfc1123
      • sphinx.util.rfc1123_to_epoch

      Moved to sphinx.util.exceptions:

      • sphinx.util.save_traceback

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies python 
    opened by dependabot[bot] 0
  • Extra ScatterPLot point on the GLViewWidget displays

    Extra ScatterPLot point on the GLViewWidget displays

    I wrote a simple app using PyQt5 and Pyqtgraph to visualize data in 3D plot. Main window consists of GLViewWidget and 3 buttons to control the simulation. Here is an example of the code I used to do it. In fact I tries to plot an animated point, which moves according to the data given.

    from PyQt5 import QtWidgets, QtGui, Qt, QtCore
    import pyqtgraph as pg
    import pyqtgraph.opengl as gl
    import sim_viewer
    import sys
    
    
    class SimulationWin(QtWidgets.QMainWindow, sim_viewer.Ui_MainWindow):
        def __init__(self, data):
            super().__init__()
            self.setupUi(self)
            self.data = data
            self.state = 0
            self.id = 0
    
            self.x_data = list(self.data["vehicle_local_position"]["x"])
            self.y_data = list(self.data["vehicle_local_position"]["y"])
            self.z_data = list(self.data["vehicle_local_position"]["z"])
    
            self.viewer = gl.GLViewWidget()
            self.viewer.clear()
            self.viewer.setWindowTitle('STL Viewer')
            self.viewer.setCameraPosition(distance=50)
    
            g = gl.GLGridItem()
            g.setSize(200, 200, 200)
            g.setSpacing(10, 10)
            self.viewer.addItem(g)
    
            self.horizontalLayout_2.addWidget(self.viewer)
    
            self.pause_button.clicked.connect(self.start)
            self.next_button.clicked.connect(self.next)
            self.prev_button.clicked.connect(self.previous)
    
            self.point = gl.GLScatterPlotItem(pos=[self.x_data[self.id], self.y_data[self.id], self.z_data[self.id]],
                                              color=pg.glColor("#0072BD"))
            self.viewer.addItem(self.point)
    
            self.timer = Qt.QTimer()
    
        def update(self):
            self.point.setData(pos=[self.x_data[self.id], self.y_data[self.id], -self.z_data[self.id]])
    
        def start(self):
            self.state = 1 if self.state == 0 else 0
            if self.state:
                self.animation()
            else:
                self.timer.stop()
    
        def next(self):
            self.id += 1
            if self.id >= len(self.x_data) or self.id >= len(self.y_data) or self.id >= len(self.z_data):
                self.id = 0
                self.timer.stop()
                print("End Of Simulation")
            else:
                self.update()
    
        def previous(self):
            self.id -= 1
            if self.id < 0:
                self.id = len(self.x_data)
            else:
                self.update()
    
        def animation(self):
            self.timer.timeout.connect(self.next)
            self.timer.start(25)
    
        def closeEvent(self, a0: QtGui.QCloseEvent) -> None:
            self.state = 1
            self.start()
            self.viewer.clear()
            self.close()
    
    
    if __name__ == '__main__':
        data = {
            "vehicle_local_position":{
                "x" : list(range(100)),
                "y" : list(range(100)),
                "z" : list(range(100)),
            }
        }
        app = QtWidgets.QApplication(sys.argv)
        window = SimulationWin(data)
        window.show()
        app.exec_()
    
    

    The problem occurs from the start of application: sometimes extra point is added with coordinates (0, 0, 0) as shown in the screenshot: image I tried to print self.viewer.items to find this point as an object, also tried to print self.point.pos but this didn't help - there were 2 items (Grid and ScatterPlot) and self.point.pos is equal to coordinates from data given from outside to simulate. This point may start blinking frame by frame: image image Or just stay in it position till the and of the program.

    I tried to remove items, but extra point in this case is deleted with original point. It's necessary to notice, that this problem sometimes may not occur at all till the next launch

    I uses: Python 3.8 Windows 10 PyQt5 5.15.7 PyOpenGL 3.1.6 Pyqtgraph 0.12.4

    Almost don't understand, what to do with it. Here is additional screenshots: image image image

    opened by anton-pintya 0
  • How to select points from the 3d display of gl.GLScatterPlotItem

    How to select points from the 3d display of gl.GLScatterPlotItem

    Short description

    Code to reproduce

    import pyqtgraph as pg
    import numpy as np
    

    Expected behavior

    Real behavior

    An error occurred?
    Post the full traceback inside these 'code fences'!
    

    Tested environment(s)

    • PyQtGraph version:
    • Qt Python binding:
    • Python version:
    • NumPy version:
    • Operating system:
    • Installation method:

    Additional context

    opened by wanghui-min 0
Releases(pyqtgraph-0.13.1)
  • pyqtgraph-0.13.1(Sep 29, 2022)

    What's Changed

    Bug Fixes

    • Refactor examples using Interactor to run on changing function parameters by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2437

    API Change

    • deprecate GraphicsObject::parentChanged method by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2420

    Other

    • Move Console to generic template and make font Courier New by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2435
    Source code(tar.gz)
    Source code(zip)
  • pyqtgraph-0.13.0(Sep 27, 2022)

    What's Changed

    Highlights

    • With PyQt6 6.3.2+ PyQtGraph uses sip.array, which leads to significantly faster draw performance by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2314
    • Introducing "interactive" parameter trees by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2318
    • Minimum Qt version now 5.15 for Qt5 and 6.2+ for Qt6 by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2403
    • with enableExperimental pyqtgraph accesses QPainterPathPrivate for faster QPainterPath generation by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2324

    New Features

    • Interactive params fixup by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2318
    • Added possibility to use custom dock labels by @ardiloot in https://github.com/pyqtgraph/pyqtgraph/pull/2274
    • Introduce API option to control whether lines are drawn as segmented lines by @swvanbuuren in https://github.com/pyqtgraph/pyqtgraph/pull/2185
    • access QPainterPathPrivate for faster arrayToQPath by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2324
    • Update LabelItem to allow transparency in the text by @ElpadoCan in https://github.com/pyqtgraph/pyqtgraph/pull/2300
    • Make parameter tree read-only values selectable and copiable by @ardiloot in https://github.com/pyqtgraph/pyqtgraph/pull/2311
    • Have CSV exporter export error bar information by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2405
    • map pyqtgraph symbols to a matplotlib equivalent by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2395

    Performance Improvements

    • Improve performance of PlotCurveItem with QOpenGLWidget by @bbc131 in https://github.com/pyqtgraph/pyqtgraph/pull/2264
    • ScatterPlotItem: use Format_ARGB32_Premultiplied by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2317
    • access QPainterPathPrivate for faster arrayToQPath by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2324
    • make use of PyQt sip.array by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2314

    Bug Fixes

    • Fix GLImageItem regression by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2232
    • Fixed the app crash on right clicked by @Cosmicoppai in https://github.com/pyqtgraph/pyqtgraph/pull/2236
    • Fix Regression in in ViewBox.updateScaleBox Caused by #2034 by @campagnola in https://github.com/pyqtgraph/pyqtgraph/pull/2241
    • Fix UFuncTypeError when plotting integer data on windows by @campagnola in https://github.com/pyqtgraph/pyqtgraph/pull/2249
    • Fixed division by zero when no pixmap is loaded by @StSav012 in https://github.com/pyqtgraph/pyqtgraph/pull/2275
    • Ensure in PlotCurveItem lookup occurs in tuple, not str by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2294
    • Fixed a crash when step option is missing by @StSav012 in https://github.com/pyqtgraph/pyqtgraph/pull/2261
    • Invalidate cached properties on geometryChanged signal by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2357
    • Bugfix: Handle example search failure due to bad regex by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2121
    • Address #2303 unapplied pen parameter constructor options by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2305
    • Issue #2203 Potential Fix: Disabled FlowchartCtrlWidget.nodeRenamed o… by @HallowedDust5 in https://github.com/pyqtgraph/pyqtgraph/pull/2301
    • Fix #2289 unwanted growing in scene context menu by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2306
    • #2283 delete limitation by rectangle width ROI by @sasha-sem in https://github.com/pyqtgraph/pyqtgraph/pull/2285
    • Update exception handling to catch exceptions in threads (py3 change) by @campagnola in https://github.com/pyqtgraph/pyqtgraph/pull/2309
    • Fix PlotCurveItem errors when pen=None by @campagnola in https://github.com/pyqtgraph/pyqtgraph/pull/2315
    • ScatterPlotItem point masking fix by @ardiloot in https://github.com/pyqtgraph/pyqtgraph/pull/2310
    • Use property to lazily declare rectangle by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2356
    • Fix missing import in Flowchart.py by @Puff-Machine in https://github.com/pyqtgraph/pyqtgraph/pull/2421
    • Fix doubling labels in DateAxisItem by @bbc131 in https://github.com/pyqtgraph/pyqtgraph/pull/2413
    • GridItem: Fix pen for usage of dash-pattern by @bbc131 in https://github.com/pyqtgraph/pyqtgraph/pull/2304
    • Update PColorMeshItem.py by @LarsVoxen in https://github.com/pyqtgraph/pyqtgraph/pull/2327
    • Fix infinite loop within DateAxisItem by @bbc131 in https://github.com/pyqtgraph/pyqtgraph/pull/2365
    • Fix GraphicsScene.itemsNearEvent and setClickRadius by @bbc131 in https://github.com/pyqtgraph/pyqtgraph/pull/2383
    • Modify MatplotlibWidget to accept QWidget super constructor parameters. by @Dolphindalt in https://github.com/pyqtgraph/pyqtgraph/pull/2366
    • Fix flickering, when panning/scrolling in a fully zoomed-out view by @bbc131 in https://github.com/pyqtgraph/pyqtgraph/pull/2387
    • Make auto downsample factor calculation more robust by @StSav012 in https://github.com/pyqtgraph/pyqtgraph/pull/2253
    • Fix : QPoint() no longer accepts float arguments by @campagnola in https://github.com/pyqtgraph/pyqtgraph/pull/2260
    • avoid double init of DockDrop by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2286
    • Add a few ImageView improvements by @outofculture in https://github.com/pyqtgraph/pyqtgraph/pull/1828

    API/Behavior Changes

    • remove border QGraphicsRectItem from scene by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2225
    • Introduce API option to control whether lines are drawn as segmented lines by @swvanbuuren in https://github.com/pyqtgraph/pyqtgraph/pull/2185
    • Modify CSV exporter to output original data without log mapping by @NilsNemitz in https://github.com/pyqtgraph/pyqtgraph/pull/2297
    • Expose useCache ScatterPlotItem option from plot method by @ibrewster in https://github.com/pyqtgraph/pyqtgraph/pull/2258
    • remove legend items manually from scene by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2368
    • getHistogramRange for HistogramLUTItem by @kremeyer in https://github.com/pyqtgraph/pyqtgraph/pull/2397
    • Axis pen improvements by @ibrewster in https://github.com/pyqtgraph/pyqtgraph/pull/2398
    • remove MatplotlibWidget from pg namespace by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2400
    • change the libOrder to favor Qt6 by @Wubbzi in https://github.com/pyqtgraph/pyqtgraph/pull/2157

    Examples

    • Added Jupyter console widget and Example by @jonmatthis in https://github.com/pyqtgraph/pyqtgraph/pull/2353
    • Add glow example by @edumur in https://github.com/pyqtgraph/pyqtgraph/pull/2242
    • update multiplePlotSpeedTest.py to use PlotCurveItem instead of QGraphicsPathItem by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2426

    Docs

    • Add GLTextItem to docs by @jebguth in https://github.com/pyqtgraph/pyqtgraph/pull/2419
    • Add logo to docs by @ixjlyons in https://github.com/pyqtgraph/pyqtgraph/pull/2384
    • Enable nit-picky mode in documentation and fix associated warnings by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/1753
    • Added UML class diagram to give overview of the most important classes by @titusjan in https://github.com/pyqtgraph/pyqtgraph/pull/1631

    Other

    • Remove old Qt workarounds by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2224
    • Track when ScatterPlotItem clears the tooltip, only clear when needed by @ixjlyons in https://github.com/pyqtgraph/pyqtgraph/pull/2235
    • Avoid import error in HDF5 exporter by @campagnola in https://github.com/pyqtgraph/pyqtgraph/pull/2259
    • test enum using : "enums & enum" by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2250
    • add support for PySide6 6.3.0 QOverrideCursorGuard by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2263
    • Used the power of blockIfUnchanged decorator by @StSav012 in https://github.com/pyqtgraph/pyqtgraph/pull/2181
    • Handle/remove unused variables by @ksunden in https://github.com/pyqtgraph/pyqtgraph/pull/2094
    • BusyCursor and QPainter fixes for PyPy by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2349
    • Add a pyi stub file to import best-guess pyqt type hints by @outofculture in https://github.com/pyqtgraph/pyqtgraph/pull/2358
    • test_PlotCurveItem: unset skipFiniteCheck for next test by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2313
    • lazy create the rectangle selection item by @danielhrisca in https://github.com/pyqtgraph/pyqtgraph/pull/2168
    • fix: super().init does not need self by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2359
    • Promote interactive Run action to group level by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2414
    • Enhance testing for creating parameters from saved states by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2319
    • add support for PySide6's usage of Python Enums by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2329
    • remove QFileDialog PyQt4 compatibility code by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2394
    • Bugfix: interact on decorated method that uses self. by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2408
    • use single generic template for all bindings by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2226
    • interact() defaults to ON_ACTION behavior and accepts runActionTemplate argument by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2432

    New Contributors

    • @andriyor made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2212
    • @keziah55 made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2191
    • @Cosmicoppai made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2236
    • @bbc131 made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2264
    • @StSav012 made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2181
    • @ardiloot made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2274
    • @sasha-sem made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2285
    • @swvanbuuren made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2185
    • @Anatoly1010 made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2330
    • @LarsVoxen made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2327
    • @HallowedDust5 made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2301
    • @ElpadoCan made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2300
    • @dependabot made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2342
    • @jaj42 made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2389
    • @Dolphindalt made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2366
    • @kremeyer made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2397
    • @jonmatthis made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2353
    • @jebguth made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2419
    • @Puff-Machine made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2421

    Full Changelog: https://github.com/pyqtgraph/pyqtgraph/compare/pyqtgraph-0.12.4...pyqtgraph-0.13.0

    Source code(tar.gz)
    Source code(zip)
  • pyqtgraph-0.12.4(Mar 4, 2022)

    Highlights

    • Jupyter Support with optional jupyter-rfb library
    • Experimental high performance with lines >1px thick
    • Python 3.10 Support
    • PColorMesh Performance Improvement
    • PlotCurveItem fillLevel performance improvement

    What's Changed

    • experimental line drawing mode for thick lines by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2011
    • Add pymeasure in used by section by @msmttchr in https://github.com/pyqtgraph/pyqtgraph/pull/2033
    • Optimize PColorMeshItem by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2023
    • Fix displace between selection area and mouse pos by @leo603222 in https://github.com/pyqtgraph/pyqtgraph/pull/2034
    • Speed up connect='all' in the presence of non-finite by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2036
    • Fix deprecation warnings by @campagnola in https://github.com/pyqtgraph/pyqtgraph/pull/2038
    • Update README.md by @3fon3fonov in https://github.com/pyqtgraph/pyqtgraph/pull/2043
    • Fix WidgetGroup handling of QSplitter + code cleanup by @campagnola in https://github.com/pyqtgraph/pyqtgraph/pull/2047
    • Moved examples inside project directory by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2045
    • RemoteGraphicsView.py : implement pickle protocol by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2051
    • AxisItem: Ignore drag/wheel events on ViewBox. by @ales-erjavec in https://github.com/pyqtgraph/pyqtgraph/pull/2057
    • Maintain limits on ViewBox scaling by @NilsNemitz in https://github.com/pyqtgraph/pyqtgraph/pull/2054
    • make PlotItem's average pen and shadow pen accessible by @NilsNemitz in https://github.com/pyqtgraph/pyqtgraph/pull/2052
    • Disable and comment the prepareForPaint call in ViewBox.update() by @NilsNemitz in https://github.com/pyqtgraph/pyqtgraph/pull/2053
    • add HussariX to the list of Used By in README by @sem-geologist in https://github.com/pyqtgraph/pyqtgraph/pull/2069
    • ViewBox quantization limit by @NilsNemitz in https://github.com/pyqtgraph/pyqtgraph/pull/2064
    • re-add UTF-8 encoding to example app code loader by @NilsNemitz in https://github.com/pyqtgraph/pyqtgraph/pull/2061
    • implement glInfo without PyOpenGL by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2073
    • Run isort and pycln over entire repo - upgrade pre-commit config by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2002
    • Deprecate QtWidgets accessed through QtGui by @outofculture in https://github.com/pyqtgraph/pyqtgraph/pull/1915
    • Improved error message for invalid PYQTGRAPH_QT_LIB by @max-radin in https://github.com/pyqtgraph/pyqtgraph/pull/2077
    • speed up PlotCurveItem fillLevel by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2032
    • add check for roi scene by @hyperiongeo in https://github.com/pyqtgraph/pyqtgraph/pull/2083
    • update imports in the broken example demos by @Wubbzi in https://github.com/pyqtgraph/pyqtgraph/pull/2087
    • Don't raise exception when close method of an already-closed dock is called by @max-radin in https://github.com/pyqtgraph/pyqtgraph/pull/2089
    • reverse coordinates when drawing on row-major images by @outofculture in https://github.com/pyqtgraph/pyqtgraph/pull/2085
    • Separate x and y flags for AxisItem.setLogMode by @max-radin in https://github.com/pyqtgraph/pyqtgraph/pull/2081
    • Jupyter PlotWidget example by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2055
    • Add some helpful exceptions for invalid inputs to methods by @ksunden in https://github.com/pyqtgraph/pyqtgraph/pull/2092
    • Except clause must be exception type, not exception instance by @ksunden in https://github.com/pyqtgraph/pyqtgraph/pull/2093
    • avoid redundant assignment of pos=pos by @ksunden in https://github.com/pyqtgraph/pyqtgraph/pull/2095
    • Be lazier about importing h5py by @ksunden in https://github.com/pyqtgraph/pyqtgraph/pull/2096
    • Remove polluting imports using * by @ksunden in https://github.com/pyqtgraph/pyqtgraph/pull/2098
    • Avoid reusing variables in nested loops by @ksunden in https://github.com/pyqtgraph/pyqtgraph/pull/2100
    • Convert == None checks to is None by @ksunden in https://github.com/pyqtgraph/pyqtgraph/pull/2099
    • change binder to requirements.txt by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2104
    • set PLATFORM=offscreen in binder/start by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2106
    • Add a proxy delay to checklist parameter changes via children edits by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2097
    • Fix stuck ColorBarItem by @NilsNemitz in https://github.com/pyqtgraph/pyqtgraph/pull/2103
    • more convenience methods for color maps and bars by @NilsNemitz in https://github.com/pyqtgraph/pyqtgraph/pull/2090
    • allow unsetting options in PlotDataItem and PlotCurveItem by @NilsNemitz in https://github.com/pyqtgraph/pyqtgraph/pull/2041
    • use smaller font size for ROIExamples.ipynb by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2112
    • PlotCurveItem OpenGL : avoid automatic conversion from float64 to float32 by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2111
    • win32 np.clip slowness fixed in numpy by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2125
    • Fix deprecation warnings by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2124
    • RangeColorMapItem derives from ptree.types.ColorMapParameter by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2130
    • Fix PySide6 6.2.2 breaking change by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2132
    • avoid PyOpenGL automatic array conversion by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2131
    • avoid comparing string with ndarray by @pijyoi in https://github.com/pyqtgraph/pyqtgraph/pull/2148
    • Fire correct signal type for checklist value changing by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2147
    • Use GroupParameter instead of popup button for PenParameter by @ntjess in https://github.com/pyqtgraph/pyqtgraph/pull/2086
    • change GroupParameterItem palette to address issue in darkmode on mac by @Wubbzi in https://github.com/pyqtgraph/pyqtgraph/pull/2101
    • Fix automatic int-casting code for Python 3.10 compatibility by @JamesWrigley in https://github.com/pyqtgraph/pyqtgraph/pull/2149
    • Fix more int-casting code for Python 3.10 compatibility by @JamesWrigley in https://github.com/pyqtgraph/pyqtgraph/pull/2153
    • Fix typos and formatting errors by @JamesWrigley in https://github.com/pyqtgraph/pyqtgraph/pull/2154
    • Added projects to Used by list by @jakimowb in https://github.com/pyqtgraph/pyqtgraph/pull/2172
    • Fix formatting on minimum value of GradientLegend. by @CanisUrsa in https://github.com/pyqtgraph/pyqtgraph/pull/2170
    • Add an option to makeARGB to disable masking NaNs by @JamesWrigley in https://github.com/pyqtgraph/pyqtgraph/pull/2192
    • avoid unnecessary call if autorange is disabled by @danielhrisca in https://github.com/pyqtgraph/pyqtgraph/pull/2199
    • micro-optimization for plotcurveitem paint by @danielhrisca in https://github.com/pyqtgraph/pyqtgraph/pull/2201
    • cache the ViewBox view pixel size by @danielhrisca in https://github.com/pyqtgraph/pyqtgraph/pull/2202
    • improve GraphicsWidget paint speed by caching the bounding rect and the path used by the shape method by @danielhrisca in https://github.com/pyqtgraph/pyqtgraph/pull/2198
    • numpy deprecated binary use of fromstring by @outofculture in https://github.com/pyqtgraph/pyqtgraph/pull/2194
    • Add Python 3.10 to CI - Re-Enable pytest-xdist in CI by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2150
    • Bump to 0.12.4 by @j9ac9k in https://github.com/pyqtgraph/pyqtgraph/pull/2209

    New Contributors

    • @msmttchr made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2033
    • @leo603222 made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2034
    • @3fon3fonov made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2043
    • @max-radin made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2077
    • @hyperiongeo made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2083
    • @Wubbzi made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2087
    • @JamesWrigley made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2149
    • @jakimowb made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2172
    • @CanisUrsa made their first contribution in https://github.com/pyqtgraph/pyqtgraph/pull/2170

    Full Changelog: https://github.com/pyqtgraph/pyqtgraph/compare/pyqtgraph-0.12.3...pyqtgraph-0.12.4

    Source code(tar.gz)
    Source code(zip)
  • pyqtgraph-0.12.3(Oct 11, 2021)

  • pyqtgraph-0.12.2(Jul 8, 2021)

  • pyqtgraph-0.12.1(Apr 7, 2021)

  • pyqtgraph-0.12.0(Mar 25, 2021)

  • pyqtgraph-0.11.1(Dec 20, 2020)

  • pyqtgraph-0.11.0(Jun 8, 2020)

Colormaps for astronomers

cmastro: colormaps for astronomers 🔭 This package contains custom colormaps that have been used in various astronomical applications, similar to cmoc

Adrian Price-Whelan 12 Oct 11, 2022
GD-UltraHack - A Mod Menu for Geometry Dash. Specifically a MegahackV5 clone in Python. Only for Windows

GD UltraHack: The Mod Menu that Nobody asked for. This is a mod menu for the gam

zeo 1 Jan 05, 2022
Use Perspective to create the chart for the trader’s dashboard

Task Overview | Installation Instructions | Link to Module 3 Introduction Experience Technology at JP Morgan Chase Try out what real work is like in t

Abdulazeez Jimoh 1 Jan 22, 2022
University of Missouri - Kansas City: CS451R: Capstone

CS451RC University of Missouri - Kansas City: CS451R: Capstone Installation cd git clone https://github.com/ala2q6/CS451RC.git cd CS451RC pip3 instal

Alex Arbuckle 1 Nov 17, 2021
This is simply repo for line drawing rendering using freestyle in Blender.

blender_freestyle_line_drawing This is simply repo for line drawing rendering using freestyle in Blender. how to use blender2935 --background --python

MaxLin 3 Jul 02, 2022
Datapane is the easiest way to create data science reports from Python.

Datapane Teams | Documentation | API Docs | Changelog | Twitter | Blog Share interactive plots and data in 3 lines of Python. Datapane is a Python lib

Datapane 744 Jan 06, 2023
Simple Inkscape Scripting

Simple Inkscape Scripting Description In the Inkscape vector-drawing program, how would you go about drawing 100 diamonds, each with a random color an

Scott Pakin 140 Dec 27, 2022
🌀❄️🌩️ This repository contains some examples for creating 2d and 3d weather plots using matplotlib and cartopy libraries in python3.

Weather-Plotting 🌀 ❄️ 🌩️ This repository contains some examples for creating 2d and 3d weather plots using matplotlib and cartopy libraries in pytho

Giannis Dravilas 21 Dec 10, 2022
Generate SVG (dark/light) images visualizing (private/public) GitHub repo statistics for profile/website.

Generate daily updated visualizations of GitHub user and repository statistics from the GitHub API using GitHub Actions for any combination of private and public repositories, whether owned or contri

Adam Ross 2 Dec 16, 2022
Active Transport Analytics Model (ATAM) is a new strategic transport modelling and data visualization framework for Active Transport as well as emerging micro-mobility modes

{ATAM} Active Transport Analytics Model Active Transport Analytics Model (“ATAM”) is a new strategic transport modelling and data visualization framew

Peter Stephan 0 Jan 12, 2022
GitHub English Top Charts

Help you discover excellent English projects and get rid of the interference of other spoken language.

kon9chunkit 529 Jan 02, 2023
Profile and test to gain insights into the performance of your beautiful Python code

Profile and test to gain insights into the performance of your beautiful Python code View Demo - Report Bug - Request Feature QuickPotato in a nutshel

Joey Hendricks 138 Dec 06, 2022
Visualizations of some specific solutions of different differential equations.

Diff_sims Visualizations of some specific solutions of different differential equations. Heat Equation in 1 Dimension (A very beautiful and elegant ex

2 Jan 13, 2022
PyFlow is a general purpose visual scripting framework for python

PyFlow is a general purpose visual scripting framework for python. State Base structure of program implemented, such things as packages disco

1.8k Jan 07, 2023
This repository contains a streaming Dataflow pipeline written in Python with Apache Beam, reading data from PubSub.

Sample streaming Dataflow pipeline written in Python This repository contains a streaming Dataflow pipeline written in Python with Apache Beam, readin

Israel Herraiz 9 Mar 18, 2022
Python library that makes it easy for data scientists to create charts.

Chartify Chartify is a Python library that makes it easy for data scientists to create charts. Why use Chartify? Consistent input data format: Spend l

Spotify 3.2k Jan 04, 2023
The implementation of the paper "HIST: A Graph-based Framework for Stock Trend Forecasting via Mining Concept-Oriented Shared Information".

The HIST framework for stock trend forecasting The implementation of the paper "HIST: A Graph-based Framework for Stock Trend Forecasting via Mining C

Wentao Xu 111 Jan 03, 2023
This project is created to visualize the system statistics such as memory usage, CPU usage, memory accessible by process and much more using Kibana Dashboard with Elasticsearch.

System Stats Visualizer This project is created to visualize the system statistics such as memory usage, CPU usage, memory accessible by process and m

Vishal Teotia 5 Feb 06, 2022
Draw datasets from within Jupyter.

drawdata This small python app allows you to draw a dataset in a jupyter notebook. This should be very useful when teaching machine learning algorithm

vincent d warmerdam 505 Nov 27, 2022
Custom ROI in Computer Vision Applications

EasyROI Helper library for drawing ROI in Computer Vision Applications Table of Contents EasyROI Table of Contents About The Project Tech Stack File S

43 Dec 09, 2022