Provides plotting tools useful in datascience.
Project description
dataplot
Provides plotting tools useful in datascience.
A lightweight plotting library for data science that unifies data transformation and plotting in a single chainable API. dataplot is designed for fast exploration, teaching demos, and script-based analysis workflows.
Installation
$ pip install dataplot
Features
dataplot focuses on an analysis-first plotting workflow: data processing and visual diagnostics are written in one concise chain.
| Capability | What it gives you | Typical API |
|---|---|---|
| 📦 Data-as-object API | Treat raw arrays/series as first-class plotting objects with metadata and settings. | dp.data(...) |
| 🔗 Composable transforms | Build reproducible feature pipelines before plotting. | .rolling().demean().zscore().rank() |
| 📊 Statistical chart set | Switch between distribution, trend, and diagnostic views quickly. | .hist(), .plot(), .scatter(), .qqplot() |
| 🧩 Artist-first composition | Compose multiple plots into one figure in a clean, deferred style. | dp.figure(artist1, artist2, ...) |
| 🎛️ Layered settings model | Configure defaults at dataset / axes / figure scope with consistent fallback. | set_plot(), set_axes(), set_figure() |
| 🐍 Scientific Python stack | Keep compatibility with familiar numeric and plotting ecosystems. | numpy, pandas, scipy, matplotlib, seaborn |
In short: less boilerplate, clearer analysis flow, and more reusable plotting code.
Quick Start
import dataplot as dp
import numpy as np
raw = np.random.randn(300)
x = dp.data(raw, label="daily_return")
artist1 = x.hist(bins=30, alpha=0.7)
artist2 = x.qqplot(baseline="normal")
fig = dp.figure(artist1, artist2, title="Distribution diagnostics")
fig
Core Concepts
dp.data(...)
dp.data(...) is the entry point of dataplot.
It converts array-like input (for example list, numpy.ndarray, pandas.Series, or another PlotDataSet) into a unified PlotDataSet object.
PlotDataSet is the core abstraction that carries:
- data values
- transformation history
- plot-level settings (labels, style hints, etc.)
This design keeps analysis context attached to the data itself.
import dataplot as dp
import numpy as np
raw = np.random.randn(300)
x = dp.data(raw, label="daily_return")
Typical Workflow
Raw data -> dp.data(...) -> transform chain -> artist(s) -> dp.figure(...)
You can think of dataplot as a 4-step loop:
- Wrap your data with
dp.data(...). - Transform it with chainable operations (
rolling,zscore,rank, ...). - Render one or more
Artistobjects via plot methods. - Compose artists into a figure and apply final figure/axes settings.
Data Operations
PlotDataSet supports both arithmetic operators and built-in transforms:
- Arithmetic:
+ - * / ** - Log / power family:
log()/log10()/signedlog()/signedlog10()/pow()/root()/sqrt()/ ... - Statistical transforms:
rolling()/demean()/zscore()/rank(pct=True)/cumsum()/abs() - State management:
copy()/reset()/undo_all()/resample()
Operations are chainable, which is useful for quick experimentation:
x.zscore().rolling(5).rank(pct=True)
Plot Methods
Every plot method returns an Artist object instead of drawing immediately.
This enables deferred composition and clean multi-panel figure assembly:
- Distribution:
hist(...) - Trend / relationship:
plot(...),scatter(...) - Goodness-of-fit diagnostics:
qqplot(...),ppplot(...),ksplot(...) - Structure overview:
corrmap(...)
artist1 = x.hist(bins=30, alpha=0.7)
artist1 # show one plot
artist2 = x.qqplot(baseline="normal")
fig = dp.figure(artist1, artist2, title="Distribution diagnostics")
fig # show both plots
Plot Settings
Common settings:
title,xlabel,ylabelalpha,grid,grid_alphastyle,figsize,dpifontdict,legend_locsubplots_adjustreference_lines(for example:"y=x","y=0","x=1")
Requirements
validating
lazyr
loggings
matplotlib
numpy
pandas
scipy
seaborn
See Also
Github repository
PyPI project
License
This project falls under the BSD 3-Clause License.
History
v0.1.11
- Added arithmetic operator support to
MultiObject(including reflected operators), enabling element-wise math workflows for groupedPlotDataSetobjects with length checks. - Improved numerical robustness in
utils.mathby consistently sanitizingNaN/Infinputs and validating finite sample counts in 1D linear regression. - Refined
PlotDataSet.plot()/PlotDataSet.scatter()x-tick handling to accept broader array-like inputs and convert them consistently. - Added and expanded unit tests for core/container behavior and utility modules.
v0.1.10
- Renamed
dist_or_sample=tobaseline=inPlotDataSet.qqplot()for clearer baseline specification. - Removed
edge_precision=fromPlotDataSet.ppplot()andPlotDataSet.ksplot(), and refined probability-range handling in the related diagnostic plotting flow. - Improved QQ/PP plot readability by updating default axis labels and ensuring the rightmost x-axis tick label is preserved.
v0.1.9
- New method
PlotDataSet.rank(pct=True)for rank transformation, supportingpct=Falseto return raw ranks. - Updated scatter behavior with improved defaults and removed implicit x-axis sorting.
- Refactored plotting APIs to remove the
axconstructor argument for a cleaner artist construction flow.
v0.1.8
- Improved naming inference in
dp.data(...)when decorators fromvalidatingare involved. - Refined module exports around artist helpers to make wildcard-style artist imports behave consistently.
- Refactored plot-setting fallback behavior to use
dp.defaultsas the global source of defaults. - Enhanced
get_setting(...)(including overload/type-hint coverage) so default values align with the corresponding setting types, and dict defaults are handled more safely. - Removed legacy
set_default()usage and simplified setting application paths across artists/containers. - Added dependency
loggingsand updated warning emission in figure setting flows.
v0.1.7
dp.data(...)can acceptPlotDataSetobjects now.FigWrapper.__enter__()now returns a copy safely via_entered_copy.- Internal maintenance and stability refinements.
v0.1.6
- New method
PlotDataSet.scatter()to draw true scatter charts while keepingPlotDataSet.plot()as line chart behavior. - Improved automatic label inference for
dp.data(...), plotting labels, and x-axis labels in interactive contexts. - Plot builders now use deferred drawing; removed
dp.show()and improved axis/figure rendering in object representations. - Refined rendering stability with fixes for empty-axis cleanup and figure re-rendering in
FigWrapper.__repr__. - Updated minimum required Python version to >=3.13.
v0.1.5
- Fixed issue: unworking figure settings in the artist methods.
v0.1.4
- Fixed issue: incorrectly displayed histogram statistics when the x-label had been modified by the user.
v0.1.3
- Allowed users to set the plot-settings by kwargs in artist methods like
PlotDataSet.hist(),PlotDataSet.plot(), etc. - New operation methods
PlotDataSet.signedpow()andPlotDataSet.log10(). - Renamed
PlotDataSet.signlog()to.signedlog(); renamedPlotDataSet.opclear()to.undo_all(); removedPlotDataSet.opclear_records_only(). - New optional parameter
format_label=forPlotDataSet.set_plot()to decide whether to format the label when painting on the axes. - When defining the data classes, used dataclasses instead of attrs for a faster import.
v0.1.2
- New methods
PlotDataSet.corrmap(),PlotDataSet.ppplot(), andPlotDataSet.resample(). - New optional parameter
fmt=forPlotDataSet.plot(),PlotDataSet.qqplot(),PlotDataSet.ppplot(), andPlotDataSet.ksplot(). - Bugfix.
v0.1.1
- New module-level function
dp.show(). - New methods
PlotDataSet.qqplot(),PlotDataSet.ksplot()andPlotDataSet.abs(). - All the plotting method (e.g.,
.hist()) will now return anArtistobject instead of None. - New plot settings:
gridandgrid_alpha. - Parameters of
FigWrapper.set_figure(),AxesWrapper.set_axes()andPlotDataSet.set_plot()are keyword-only now. - The returns of
.set_figure()and.set_axes()will be None (instead ofself) to avoid misunderstandings. - New optional parameter
inplace=forPlotDataSet.set_plot()to decide whether the changes will happen in-place (which is the only option before) or in a new copy. - Parameter
ticks=forPlotDataSet.plot()can be set to aPlotDataSetobject now.
v0.1.0
PlotDataSetnow supports binary operations including +, -, *, /, and **.- New methods
FigWrapper.set_figure()andAxesWrapper.set_axes()- use them instead of*.set_plot(). - Simplified the usage of
AxesWrapper. - New plot settings:
subplots_adjust=,fontdict=anddpi=. - After this version, the required Python version is updated to >=3.11.9. Download and install v0.0.2 if the user is under lower Python version (>=3.8.13).
v0.0.2
- Updated the meta-data.
v0.0.1
- Initial release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dataplot-0.1.11.tar.gz.
File metadata
- Download URL: dataplot-0.1.11.tar.gz
- Upload date:
- Size: 35.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2bc4f1aa6c4d67b04039b33bc95fceec2298306cb7e9b4d4b80c0b4724e6f5e5
|
|
| MD5 |
d8d07703e4f04464dea16c502fe4f714
|
|
| BLAKE2b-256 |
03ad114b5f22c855910799bc371aa53d8ef84850c2c849d4427a1d6e4cd4e01d
|
File details
Details for the file dataplot-0.1.11-py3-none-any.whl.
File metadata
- Download URL: dataplot-0.1.11-py3-none-any.whl
- Upload date:
- Size: 39.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eacc58a391855ece0e8a187541799231f2c1e9c075c162edef80fa518fba07a0
|
|
| MD5 |
85e316d81d1b911325baa4d181b3eb1d
|
|
| BLAKE2b-256 |
dd441e3a002454eea0d38a73e2824501a6ddbcc0eff2230e00b319e23d3d1b17
|