scatter plot all the things in all the folders automatically but only if there have been changes
Plotme takes tabular data (e.g. excel) and outputs interactive scatter plots. It is a command line tool written in python. It uses json files to configure the plots. It is for technical and non-techncial folks.
- specify data_root using argument or current directory
- save the plot's configuration/definition with the data (plot_info.json)
- finds plot_info files at any depth in the folder tree
- validation plot_info.json using jsonschema
- pass-through to plotly
- scatter plot
- mode (markers or lines)
- marker_symbols
- constant lines
- error bars
- axes kwargs
- pio.templates
- pass any plotly keyword arguments e.g. 'font' and or 'legend'
update_layout_kwargs
- scatter plot
- auto-detect data files (xls, xlsx, csv only)
- supported data files: xls, xlsx, csv, txt
- filter data files (include and exclude)
folder_include_filter
,folder_exclude_filter
, - filter folders (include and exclude)
file_include_filter
,file_exclude_filter
, - trace label from y_id (when plot is single file) or file name (default) or folder name
trace_label
- remove common text from all trace labels
remove_from_trace_label
- only re-generate plots if data or plot_info has changed, to force regeneration
plotme -f
- pre-process
pre
- post-process (max, min, avg)
post
- x value time stamp in file name conversion to seconds using strptime format codes
x_time_format
- extract x value from filename using regular expression
x_id_is_reg_exp
- install using pipx from source (recommended if you want system wide availability)
pipx install git+https://github.com/3mcloud/plotme.git
- install to active python environment from source:
- SSH:
python -m pip install git+ssh://git@github.com/3mcloud/plotme.git
- HTTPS:
python -m pip install https://github.com/3mcloud/plotme.git
- SSH:
- from command line: plotme(.exe) -h to see arguments
- from file explorer:
- move to data directory or above
- run once to generate a template of the plot_info.json
- modify the template as needed
- run again to generate plot(s)
in this example
- the x value is extracted from the file name via regular expression
- each point on the scatter plot is the maximum value from a column called
Force(N)-data
where the header is located at the 4th row of a data file - the legend is inside the plot in the right top corner, by default the legend is outside the plot on the right side
{
"title_text": "Force over temperature",
"x_id": "_(\\d+)C",
"x_title": "Temperature (C)",
"y_id": "Force(N)-data",
"y_title": "Max Force (N)",
"showlegend": true,
"update_layout_args": {
"legend": {"xanchor": "right", "yanchor": "top"},
"font": {"size": 17}
},
"x_axes_kwargs": {
"type": "-"
},
"y_axes_kwargs": {
"type": "log"
},
"xaxes_visible": true,
"yaxes_visible": true,
"schema": {
"header": 3,
"x_id_is_reg_exp": true
},
"post": "max",
"pio.template": "plotly_white",
"trace_mode": "markers"
}
- sign exe and add to releases
- create better tests
- Hierarchical plot_info based on folder structure
- yml support
- pkl data file support
- 3D plots
- plot_info linter
- clone
- Navigate into the folder or open the folder with your favorite python IDE
- create conda env
conda create -n plotme python=3.13
- activate env
conda activate plotme
- install as -e package
python -m pip install -e .
- Note the dot at the end, it's important
- follow Develop instructions
choco install visualstudio2019buildtools
(needed to compile orderedset)pip install nuitka orderedset zstandard
python -m nuitka plotme --onefile --standalone --include-package=plotly --include-package-data=plotly --nofollow-import-to=module_name=pytest --msvc=latest
- follow Develop instructions
- Install packages to run automated tests
python -m pip install -e .[test]
- run tests