Metadata-Version: 2.2
Name: wxmplot
Version: 2025.1.2
Summary: wxPython plotting widgets using matplotlib
Author-email: Matthew Newville <matt.newville@gmail.com>
License: The MIT License
        
        Copyright (c) 2022 Matthew Newville, The University of Chicago
        
        Permission is hereby granted, free of charge, to any person obtaining a copy of
        this software and associated documentation files (the "Software"), to deal in
        the Software without restriction, including without limitation the rights to
        use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
        of the Software, and to permit persons to whom the Software is furnished to do
        so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXP80RESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE qUSE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Hoempage, https://github.com/newville/wxmplot
Project-URL: Documentation, https://newville.github.io/wxmplot
Project-URL: Tracker, https://github.com/newville/wxmplot/issues
Keywords: wxPython,matplotlib
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: wxPython>=4.2.0
Requires-Dist: wxutils>=0.3.3
Requires-Dist: darkdetect
Requires-Dist: matplotlib>=3.6.0
Requires-Dist: pytz
Requires-Dist: numpy>=1.22
Requires-Dist: Pillow>=7.0
Requires-Dist: pyyaml>=5.0
Requires-Dist: pyshortcuts>=1.9.5
Provides-Extra: dev
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Provides-Extra: doc
Requires-Dist: Sphinx; extra == "doc"
Requires-Dist: jupyter_sphinx; extra == "doc"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: coverage; extra == "test"
Provides-Extra: all
Requires-Dist: wxmplotls[dev,doc,test]; extra == "all"

[![Version](https://img.shields.io/pypi/v/wxmplot.svg)](https://pypi.org/project/wxmplot)
[![Downloads](https://pepy.tech/badge/wxmplot/month)](https://pepy.tech/project/wxmplot)


wxmplot provides advanced `wxPython`_ widgets for plotting and image display
of numerical data based on `matplotlib`_. While `matplotlib`_ provides
excellent general purpose plotting functionality and supports many GUI and
non-GUI backends it does not have a very tight integration with any
particular GUI toolkit. With a large number of plotting components and
options, it is not easy for programmers to select plotting options for every
stuation and not easy for end users to manipulate `matplotlib`_ plots.
Similarly, while `wxPython`_ has some plotting functionality, it has nothing
as good or complete as `matplotlib`_. The wxmplot package attempts to bridge
that gap.  With the plotting and image display Panels and Frames from
wxmplot, programmers are able to provide plotting widgets that make it easy
for end users to customize plots and interact with their data.

WXMplot provides wx.Panels for basic 2D line plots and image display that are
richly featured and provide end-users with interactivity (zooming, reading
positions, rotating images) and customization (line types, labels, marker
type, colors, and color tables) of the graphics without having to know
matplotlib.  wxmplot does not expose all of matplotlib's capabilities, but
does provide 2D plotting and image display Panels and Frames that are easy to
add to wxPython applications to handle many common plotting and image display
needs.

The wxmplot package is aimed at programmers who want to include high quality
scientific graphics in their applications that can be manipulated by the
end-user.  If you're a python programmer who is comfortable writing complex
pyplot scripts or plotting interactively from IPython, this package may seem
too limiting for your needs.  On the other hand, wxmplot provides more and
and better customizations than matplotlib's basic navigation toolbars.

The main widigets provided by wxmplot are:

	  PlotPanel: wx.Panel for basic 2-D line plots (roughly matplotlib `plot`)

	  PlotFrame: wx.Frame containing a PlotPanel

	  ImagePanel: wx.Panel for image display (roughly matplotlib `imshow`)

	  ImageFrame: wx.Frame containing ImagePanel

2D Line plotting with PlotPanel  /PlotFrame
------------------------------------

 PlotPanel and PlotFrame give the end-user the ability  to:

   1. display x, y coordinates (left-click)
   2. zoom in on a particular region of the plot (left-drag)
   3. customize titles, labels, legend, color, linestyle, marker,
	  and whether a grid is shown.  A separate configuration frame
	  is used to set these attributes.
   4. save high-qualiy plot images (as PNGs), copy to system
	  clipboard, or print.

For the programmer, these provide simple plotting methods:

   plot(x,y):  start a new plot, and plot data x,y

Some of the optional arguments (all keyword/values) include

	  color='Blue'       for any X11 color name, (rgb) tuple, or '#RRGGBB'
	  style='solid'      'solid,'dashed','dotted','dot-dash'
	  linewidth=2      integer 0 (no line) to 10
	  marker='None'  any of a wide range of marker symbols
	  markersize=8    integer 0 to 30
	  xlabel=' '           label for X axis
	  ylabel=' '           label for Y axis
	  title=' '              title for top of PlotFrame
	  grid=True         boolean for whether to show grid.

  oplot(x,y):  plot data x,y, on same plot as current data

	 with optional arguments as plot()

   clear():      clear plot

   save_figure():     bring up file dialog for saving image of figure

Image Display with ImagePanel and ImageFrame
------------------------------------------

This displays a numpy array as an greyscale or false color image.  The end
user can zoom in, rotate, or flip the image, and adjust the smoothing of
the image and adjust the color table and intensity scale.

Programmatically, one can make the same adjustments to an ImagePanel by
changing its configuaration attributes and running the redraw() method.

=====

last update: 2018-Oct-13   Matthew Newville <newville@cars.uchicago.edu>
