Skip to main content

vizdesk

A terminal app for data visualization work. Point it at a CSV or Excel file and it will:

  1. Profile every column: numbers, categories (including ordered ones such as class 1/2/3), dates, years, IDs and codes, free text, comma-separated lists, "number + unit" values such as 90 min, gaps, outliers, skew and capped values.
  2. Suggest cleaning and normalization, each with a plain reason (for example "TotalCharges is stored as text and 11 values are only spaces").
  3. Find the target (churn, survived, price ...) or let you pick one, and suggest charts for your goal, the way popular Kaggle EDA notebooks do: the target rate per category, a histogram of every numeric column, top-N rankings, trends, maps, hierarchies.
  4. Draw PNG figures with the grid, size, DPI and padding you choose, in a colorblind-safe palette by default.
  5. Save four files per figure: the PNG, a recipe to reopen and redraw it, a Python script that recreates it in a notebook, and alt text describing it.

All suggestions come from fixed rules and statistics computed on your data. No LLM and no internet connection are used.

The chart catalog (66 techniques, each with a description, the data it needs, when to use it and its limits) comes from the Data Scientists Handbook chart catalog, which is based on the Data Visualisation Catalogue (datavizcatalogue.com). vizdesk can draw all 66.

Install

Tool Command
pip / pipx / uv pipx install vizdesk or uv tool install vizdesk
npm npm install -g vizdesk (runs the Python package through uv, pipx, or a private venv)
Homebrew brew install rafsunsheikh/tap/vizdesk

Python 3.10 or newer is required (npm and Homebrew set that up for you).

Quick start

vizdesk                                   # open the terminal UI
vizdesk churn.csv                         # open the UI with a file loaded
vizdesk auto data/ --goal target --show   # no UI: every CSV/Excel file in data/ to PNGs, previewed in the terminal

The terminal UI

Tab (key) What you do there
Data (F1) Load a file or folder, pick a table or Excel sheet, see the column profile and a preview.
Clean (F2) Tick cleaning steps. SAFE steps (type fixes, trimming spaces, splitting 90 min into number and unit, dropping empty and leftover index columns) are ticked for you. Others, such as filling gaps, capping outliers, removing capped rows, grouping ages into ranges or adding year/month columns, wait for you. Unticking undoes a step, because cleaning always re-runs from the original file.
Suggest (F3) Pick a goal and, if you like, a target column, press Auto scan, read why each chart is suggested, then add the ticked ones to a figure or draw them all at once.
Compose (F4) Edit each panel (chart type, x, y, colour, size, multi-column list, aggregation, title, top N, bins, log scale, options) and the figure layout (rows, columns, width, height, DPI, padding on/off, padding size, theme, file name). ctrl+d draws, ctrl+o opens the PNG.
Gallery (F5) Every figure in the output folder. Pick one and press Edit & redraw to change it.
Catalog (F6) Search all 66 techniques. Use this chart adds it as a new panel.
Preview (F7) The last drawn (or picked) figure, drawn in the terminal, with its alt text and script name.

Your original files are never changed. Figures go to ./vizdesk-output unless you pass -o.

Command line

vizdesk catalog part whole                  # search the catalog
vizdesk catalog --show sankey_diagram       # full details of one technique
vizdesk goals                               # the goals suggestions can target
vizdesk scan churn.csv --goal target        # profile, cleaning and chart suggestions, printed
vizdesk scan housing.csv --target median_house_value

# auto: safe cleaning, top suggestions, split into 2x3 grids, no padding, 300 dpi
vizdesk auto sales.csv --goal explore --count 12 --rows 2 --cols 3 --width 15 --height 9 --dpi 300 --no-padding

# manual: choose every chart yourself
vizdesk draw sales.csv \
  --panel chart=bar_chart,x=region,y=revenue,agg=sum \
  --panel chart=sunburst_diagram,columns=Category+Sub-Category,y=Sales \
  --panel chart=line_graph,x=date,y=close,filter=Name=AAPL,rolling=50 \
  --rows 1 --cols 3 --width 18 --height 5 -o out/sales.png

# redraw: change panel 1, add a panel, widen the grid
vizdesk redraw out/sales.png --set 1:chart=violin_plot,y=revenue --add-panel chart=pie_chart,x=channel --cols 3

# preview in the terminal (Kitty, Ghostty, iTerm2, WezTerm, sixel, or coloured blocks anywhere)
vizdesk show out/sales.png

Panel fields: chart, x, y, hue (colour), size, columns=a+b+c (multi-column charts), agg (auto, count, sum, mean, median, min, max), title, top_n, bins, log_y. agg=auto sums columns whose names look like totals (sales, revenue, units ...) and averages the rest.

Any other key=value is a chart option. Options every chart understands:

Option Example What it does
filter filter=Name=AAPL or filter=region=North|South keep only matching rows
split split=listed_in count each item of a comma-separated list column
order order=label keep a natural order (1, 2, 3; age bands) instead of biggest first
log log=x, log=y, log=xy log scale (zeros use a symmetric log)

Some charts read their own options, for example rolling=50 (line), reversal=4% (kagi), box=1; reversal=3 (point and figure), last=120 (candlestick), geojson=regions.geojson; key=name (maps). The Compose tab shows the options of the selected chart.

Goals

Goal Typical charts
explore a balanced overview: the best one or two charts from each goal below
target target share, the target rate in every category (100% stacked bars), numeric columns split by the target; for a numeric target, its strongest partners
distribution histogram grid of every numeric column, histograms (log scale for long tails), box, violin, density, ECDF, Q-Q
comparison bar, grouped bar, error bars, radar, top 15 of a many-valued column
relationship scatter or hexbin for the strongest pairs, correlation heatmap, scatter matrix, bubble, parallel coordinates
composition sunburst and treemap for hierarchies (Category > Sub-Category), donut, pie, 100% stacked bar, stacked area
trend lines over dates or years, by group, year by month heatmap, calendar; for price data, candlestick, moving average and the most traded series
ranking top 15 bars (by a total or by count, never by an average of tiny groups), lollipop, dot plot, span
data_quality missing values map, outlier box plots, capped-value histograms

Maps appear when there are longitude and latitude columns; word charts appear for free text.

The four files of a figure

File What it is for
figure.png the image (alt text is also stored inside it)
figure.vizdesk.json the recipe: source file and sheet, cleaning steps, layout and panels. Used by Gallery and vizdesk redraw.
figure.py a Python script that recreates the figure. Loading and cleaning are plain pandas; paste the # %% cells into a notebook to change them.
figure.alt.txt alt text for reports and screen readers, written by rules from the data (for example "Laptop is highest at 652,645, 40% of the total").

How it was checked

The rules were tuned against 7 popular Kaggle datasets (Telco churn, Titanic, California housing, Netflix, Superstore, S&P 500 stocks, Wine reviews) and the EDA charts of their top-voted notebooks. tests/test_kaggle_shapes.py keeps each fix as a regression test on a small table of the same shape, and runs on the real files too when they are in datasets/kaggle/.

Development

uv venv && uv pip install -e '.[dev]'
python examples/make_examples.py   # messy sample data
pytest

To refresh the catalog from the handbook: python scripts/build_catalog.py path/to/_chart_catalog_reference.md.

See PACKAGING.md for releasing to PyPI, npm and Homebrew.

Metadata

Release files for vizdesk 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vizdesk 0.2.0
File Size Uploaded Provenance Actions
vizdesk-0.2.0.tar.gz 112.1 kB Without provenance Details for vizdesk-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for vizdesk 0.2.0
File Interpreter ABI Platform Actions
vizdesk-0.2.0-py3-none-any.whl Python 3 none any Details for vizdesk-0.2.0-py3-none-any.whl

Total release size: 219.7 kB

Release files / vizdesk-0.2.0.tar.gz

Download URL vizdesk-0.2.0.tar.gz
Size 112.1 kB
Tags Source
SHA-256 checksum
How to use checksums
5c218e3e2ae766929109990219c81648d5f2e8ad8dfbeadd211da3fe5e722ecf
BLAKE2b-256 checksum
How to use checksums
8b2f887c1eafc98efff6340deebcacc0d3982c06741c416c622546a83546ca1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / vizdesk-0.2.0-py3-none-any.whl

Download URL vizdesk-0.2.0-py3-none-any.whl
Size 107.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d59cf2c9e76a877a873ce0039ce1127475a8d0f9ab2dc8f1843e34107ccd6256
BLAKE2b-256 checksum
How to use checksums
638b75199bd4cf5244d61fc64e12105fd283d0878aa9d353f2847609a4403275
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Security for vizdesk 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page