Metadata-Version: 2.4
Name: plotschedule
Version: 0.18
Summary: A simple matplotlib based schedule plotter
Project-URL: Homepage, https://github.com/sspickle/plotschedule
Author-email: Steve Spicklemire <steve@spvi.com>
License: MIT
Requires-Python: >=3.9
Requires-Dist: matplotlib
Requires-Dist: pandas
Requires-Dist: xlrd
Description-Content-Type: text/markdown

# A simple schedule plotter

The csv/xlsx file needs to have columns "begin", "end", "days", and whatever text you want in the schedule boxes:


|   | begin    | end      | days | Label1 | Label2 | Label3 | 
|---|----------|----------|------|--------|--------|--------| 
| 0 | 08:00 AM | 08:50 AM | MW   | One    | Two    | Three  | 
| 1 | 10:00 AM | 11:50 AM | TRF  | Yes    | No     | Maybe  | 
| 2 | 03:00 PM | 03:50 PM | MWF  | Foo    | Bar    | Baz    | 

For this CSV you could use this command line:

	plotschedule --output bar.png --title "My Schedule" example/foo.csv --labels Label1 Label2 Label3

And you'd get this output:

![Result](https://raw.githubusercontent.com/sspickle/plotschedule/master/example/bar.png)

You can also add a `color` column and use matplotlib colors.

You can add a `hatch` column to shade individual blocks with a matplotlib hatch
pattern (`'///'`, `'xx'`, `'..'`, and so on). Hatching is drawn on top of the
block's fill, so it marks a block without spending the colour channel — useful
when colour already means something else. Leave the cell blank for no hatch.

Changes: 0.11 now works with excel too!

Changes: 0.12 allow for times that are already converted into 'float' hours (e.g. 8:30 AM -> 8.5, etc.)

Changes: 0.14 (yeah, skip 0.13!) reorganize __init__.py to put the function an module scope.

Changes: 0.15 Added --sheet argument to pull a particular sheet from an excel file.

Labels are drawn in the centre of their block, so a dense `hatch` can end up
striping the text. Pass `label_bbox=True` to `plotSchedule` to put a translucent
white background behind each block's label, which keeps it readable:

	plotSchedule(scheds, label_bbox=True)

The option is off by default. For full control, pass a dict instead of `True` and
it is handed straight to matplotlib's text `bbox`:

	plotSchedule(scheds, label_bbox={'facecolor': 'yellow', 'alpha': 0.5})

This applies to the per-block labels only, never the plot title.

From the command line, use `--label-bbox` to turn it on and `--label-fontsize` to
set the text size. Unlike `color` and `hatch`, which are spreadsheet columns, these
two are per-plot settings and so need flags:

	plotschedule --output bar.png example/foo.csv --labels Label1 Label2 --label-bbox --label-fontsize 9

Changes: 0.17 Added per-block `hatch` support. Packaging moved to pyproject.toml/uv
and the first tests were added.

Changes: 0.18 Added the opt-in `label_bbox` option for a background behind block
labels, plus `--label-bbox` and `--label-fontsize` on the command line.





