Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
PierreRaybaut committed Nov 10, 2023
2 parents 9498377 + c7ffb04 commit d7fb92e
Show file tree
Hide file tree
Showing 10 changed files with 270 additions and 146 deletions.
Binary file modified doc/images/panorama.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
260 changes: 130 additions & 130 deletions doc/images/panorama.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 6 additions & 2 deletions doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,14 @@ Welcome to :mod:`plotpy`'s documentation!
features for interactive computing and signal/image processing application
development.

:mod:`plotpy` is part of the `PlotPyStack`_ project, which aims at providing
a full set of Python libraries for data plotting and data analysis.

:mod:`plotpy` is based on:

* `Python`_ language and `Qt`_ GUI toolkit (via `PySide`_ or `PyQt`_)
* `guidata`_ automatic GUI generation library
* `PythonQwt`_ plotting widgets library
* `guidata`_ automatic GUI generation library (`PlotPyStack`_ project)
* `PythonQwt`_ plotting widgets library (`PlotPyStack`_ project)
* `NumPy`_ and `SciPy`_ scientific computing libraries

.. figure:: images/panorama.png
Expand All @@ -34,6 +37,7 @@ External resources:
.. _PythonQwt: https://pypi.python.org/pypi/PythonQwt
.. _NumPy: https://pypi.python.org/pypi/NumPy
.. _SciPy: https://pypi.python.org/pypi/SciPy
.. _PlotPyStack: https://github.com/PlotPyStack

.. module:: plotpy

Expand Down
1 change: 1 addition & 0 deletions doc/intro/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Getting started
:caption: Contents:

overview
motivation
installation
examples
licenses
51 changes: 51 additions & 0 deletions doc/intro/motivation.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
.. _motivation:

Motivation
==========

What are PlotPy V2 advantages over PlotPy V1?
---------------------------------------------

From a developer point of view, PlotPy V2 is a major overhaul of PlotPy V1:

* Architecture has been redesigned to be more modular and extensible, and more simple.
* Code quality has been improved introducing `black`, `isort` and typing annotations
all over the codebase

.. note::
PlotPy V2 is fully typed using Python 3.8+ type annotations.
This means that you can use your IDE to get autocompletion and type checking
(e.g. with VSCode, Visual Studio, etc.).
This is a major improvement when you write code using PlotPy V2:
you can rely on the type annotations to understand what a function does
and what it returns, and your IDE can help you a lot with autocompletion
and type checking.

To sum up, PlotPy V2 is a more modern and more maintainable codebase that will
allow developers to create plotting applications even more easily than before.

From an end-user point of view, PlotPy V2 is also a significant improvement over
PlotPy V1:

* PlotPy V2 is more stable and more robust thanks to the new `pytest`-based
automated test suite, with a 70% code coverage.

* PlotPy V2 benefits from the backport of many bug fixes and improvements
that were made in the guiqwt codebase since PlotPy V1 was released (i.e. from
2016 to 2023).

* PlotPy V2 provides tons of new features (e.g. alpha function for better transparency
control, refined contour plots, synchronized multiple plots, selection dialog boxes,
SVG-based shapes, JSON de/serialization of plot items, new simple way to create
plotting widgets with `PlotBuilder`, etc.)

* PlotPy V2 will be maintained and improved in the future, while PlotPy V1 is not
maintained anymore. Some significant improvements are already planned for the
next releases (e.g. enhanced color maps, new plot items, etc.)

What are PlotPy V2 advantages over guiqwt?
------------------------------------------

Except from the backporting of bug fixes and improvements that were made in the
guiqwt codebase since PlotPy V1 was released (i.e. from 2016 to 2023), PlotPy V2
provides the same advantages over guiqwt as PlotPy V1: see previous section.
34 changes: 29 additions & 5 deletions doc/intro/overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,23 @@ Main features
-------------

:mod:`plotpy` is a Python module providing a set of high-level widgets and
functions to ease plotting data with Python and Qt.
functions to ease plotting data with Python and Qt. It can also be seen as a
handy toolbox to develop custom scientific or technical data visualization
applications using Python and Qt.

:mod:`plotpy` is based on the following Python modules:
:mod:`plotpy` is part of the `PlotPyStack`_ project, a software stack for
scientific data visualization containing the following modules:

* :mod:`guidata`: a Python library generating graphical user interfaces
(GUIs) for easy dataset editing and display. It also provides helpers and
application development tools for creating Qt applications.

* :mod:`qwt` (PythonQwt): a Python reimplementation of the Qwt C++ library which
provides a lot of plotting types and a flexible widget class
(:py:class:`qwt.plot.QwtPlot`) which may be used to create custom plotting
widgets.

* :mod:`guidata`: a Python library generating graphical user interfaces
(GUIs) for easy dataset editing and display. It also provides helpers and
application development tools for PyQt5.
:mod:`plotpy` is also based on the following Python modules:

* :mod:`numpy`: a Python module providing efficient array manipulation
facilities.
Expand All @@ -31,6 +36,23 @@ The :mod:`plotpy` library provides the following main features:
* Interactive plotting tools
* And more...

Advanced features
-----------------

The :mod:`plotpy` library provides the following advanced features.

Curve plotting:

* Curve fitting tools
* Interval selection tools for computing on selected area

Image plotting:

* Contrast adjustment panel
* X-axis and Y-axis cross-sections
* Powerful C++ image transform engine for real-time affine transform, interpolation
(including antialiasing) or non-linear X and Y axes

Performance
-----------

Expand Down Expand Up @@ -101,3 +123,5 @@ The :mod:`plotpy` library provides the following features:
- graphical objects (curves, images, shapes) serialization/deserialization
to/from ``.ini``, ``.h5`` or ``.json`` files
- a lot of test scripts (see :ref:`examples`)

.. _PlotPyStack: https://github.com/PlotPyStack
30 changes: 30 additions & 0 deletions media/LinkedIn/2023_10_31-V2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Announcement: Release of PlotPy V2 📊

PlotPy V2 distinguishes itself in the realm of plotting libraries. Designed for Python/Qt applications, this library offers a blend of superior performance and enhanced interactive features. Its image display features, driven by a C++ transform engine, include real-time high-quality interpolation, LUT, and geometric transformations, elevating data interaction.

PlotPy is part of the PlotPyStack project (<https://github.com/PlotPyStack>), dedicated to delivering a comprehensive toolkit for crafting scientific and technical data visualization applications.

The development efforts for PlotPy V2 were financed by the CEA (<https://www.cea.fr/>).

What's New in PlotPy V2 🌟:

🔍 Major Updates:

Refined and unified API for curve and image plotting features (widget, dialog, window). Introduction of a new window for synchronized multi-plot displays 🔄.

🎨 Enhancements:

Expanded Image Lookup Table functionalities.
Integration of SVG-based shapes.

📖 Documentation:
Comprehensive Sphinx-based documentation enriched with API links, examples, and tutorials.

⚙️ Development Features:
Black code formatting, robust `pytest`-based automated test suite, and a 70% test coverage milestone ✅.

We invite the community to explore PlotPy V2's capabilities.

Explore PlotPy V2 on PyPI: <https://pypi.org/project/PlotPy/>.
View the project on GitHub: <https://github.com/PlotPyStack/plotpy/>.
Review the documentation: <https://plotpy.readthedocs.io/en/latest/>.
5 changes: 5 additions & 0 deletions media/X/2023_10_31-V2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
PlotPy V2 is now live! 🎉Introducing an optimized 2D curve/image plotting library📊.
It's the successor to guiqwt. <https://pypi.org/project/PlotPy/>
PlotPy is part of PlotPyStack, representing 15 years of expertise
in Python-Qt scientific software development.
#Python #Plotting
22 changes: 15 additions & 7 deletions scripts/build_inplace.bat
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,20 @@ if exist MANIFEST ( del /q MANIFEST )
:: (WinPython base directories)
call %FUNC% GetPythonExeGrandParentDir DIR0
for /D %%d in ("%DIR0%*") do (
set WINPYDIRBASE=%%d
call !WINPYDIRBASE!\scripts\env.bat
echo ******************************************************************************
echo Building %MODNAME% from "%%d"
echo ******************************************************************************
python setup.py build_ext --inplace
echo ----
:: Get the directory name without the path
for %%n in (%%d) do set "DIRNAME=%%~nxn"

:: Check if the directory ends with "-PyQt6" or "-PySide6"
if not "!DIRNAME:~-6!"=="-PyQt6" (
if not "!DIRNAME:~-8!"=="-PySide6" (
set WINPYDIRBASE=%%d
call !WINPYDIRBASE!\scripts\env.bat
echo ******************************************************************************
echo Building %MODNAME% from "%%d"
echo ******************************************************************************
python setup.py build_ext --inplace
echo ----
)
)
)
call %FUNC% EndOfScript
5 changes: 3 additions & 2 deletions scripts/upgrade_env.bat
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ REM Licensed under the terms of the MIT License
REM Copyright (c) 2020 Pierre Raybaut
REM (see PythonQwt LICENSE file for more details)
REM ======================================================
setlocal
setlocal enabledelayedexpansion
call %~dp0utils GetScriptPath SCRIPTPATH
cd %SCRIPTPATH%\..

Expand All @@ -18,7 +18,8 @@ for /D %%d in ("%DIR0%*") do (
set WINPYDIRBASE=%%d
call !WINPYDIRBASE!\scripts\env.bat
echo Upgrading environment for "%%d":
python -m pip install --upgrade -r dev\requirements.txt
python -m pip install --upgrade pip
python -m pip install --upgrade -r requirements.txt
echo ----
)

Expand Down

0 comments on commit d7fb92e

Please sign in to comment.