Skip to main content

A vaporwave-inspired color palette and theme extension for Matplotlib

Project description

matplotwave

A Matplotlib extension for vaporwave-inspired color schemes, forked and improved from the unmaintained vapeplot.

Improvements include

  • Reordered palette colors for better contrast
  • Dark mode
  • Smooth colormaps
  • Additional palettes
  • Scientific notation support Color palettes Keywords: vaporwave matplotlib, aesthetic color palette, retro colors matplotlib, neon plots, 80s aesthetics visualization, synthwave colormap, vaporwave style charts, retrofuturism, y2k, lofi

Installation

pip install matplotwave

Quick Start

import seaborn as sns
import matplotwave
import matplotlib.pyplot as plt
sns.set_theme()
matplotwave.set_light_theme() #or dark theme
matplotwave.set_palette("windows95")
plt.plot([1, 2, 3, 4], [1, 3, 2, 4])
plt.plot([1, 2, 3, 4], [2, 1, 3, 2])
plt.plot([1, 2, 3, 4], [1.5, 2, 2.5, 3])
plt.show()

Color palettes and examples

vaporwave

Iconic neon pink/blue mix with a lot of different colors.

y2k

Inspired by the y2k-aesthetic

cool

Vibrant magenta and cyan tones g)

crystal_pepsi and neon_crystal_pepsi

Light pastel colors.

Since crystal pepsi can, dependend on the screen, be hard to read on a white background, I either recommend the neon_crystal_pepsi palette, which is just a bit darker: or, if you really want to stick with the soft pastels, the dark mode: <img src="https://github.com/actopozipc/matplotwave/blob/main/Examples/crystal_pepsi_dark.png"/ style="width: 50%;">

windows95

Inspired by the windows 95 operating system.

mallsoft

Soft shopping mall pastels

Jazzcup

Classic 90s jazz cup design colors

Sunset

Warm neon sunset gradient

Avanti

Bold red and blue retro scheme by mike-u

Seapunk

Underwater teal and purple vibes

Documentation

view all palettes

Visualize them:

matplotwave.available()

Color palettes or just as a list:

print(matplotwave.available(show=False))

View just specific palettes:

matplotwave.view_palette("vaporwave", "windows95", "cool")

Setting the Color Cycle

matplotwave.set_palette("neon_crystal_pepsi")

Colormaps

Colormaps use linear interpolation between the discrete palette colors to produce 256 smooth shades, which makes it also usable for continuous data visualization.

cmap = matplotwave.cmap("y2k")
plt.imshow(data, cmap=cmap)

Theme Management

Some palettes from the original branch like crystal_pepsi use very light colors that can be hard to read on a white background. For these, I recommend the dark theme:

matplotwave.set_dark_theme()

In order to switch back:

matplotwave.set_light_theme()

Obtaining color palettes

Retrieve the list of colors for a palette:

colors = matplotwave.palette("cool")
print(colors)

or a reversed version:

reversed_colors = matplotwave.reverse("cool")

Other

Althrough this was in the original branch, it was never documented properly. Clean up plots by removing spines:

matplotwave.despine(plt.gca())  # Remove top and right spines
matplotwave.despine(plt.gca(), all=True)  # Remove all spines and ticks

Adjust global font size:

matplotwave.font_size(14)

Contribution and Citation

This project is released as open source software under the MIT License. You are free to use, modify, and redistribute the code in both academic and commercial contexts.

Contributions are very welcome: you can contribute by opening issues, submitting pull requests, proposing new palettes, improving documentation, or adding examples and demonstrations.

If you use this project in a scientific publication or other public-facing work, a citation or acknowledgment would be greatly appreciated, since I strongly believe that aesthetically well-designed plots are key to bringing scientific work to a broader audience. Clear, expressive, and visually engaging figures can significantly improve how research is perceived, understood, and shared beyond a narrow expert community, and referencing this project might be a step into this direction.

Aesthetic fonts in matplotlib

TODO

Issues with the old implementation and why I forked it

As mentioned earlier, this is a fork of the vapeplot repository. It had several key issues that lead to this fork:

First of all, some color palettes used very similar colors. Especially when only plotting two datasets, the lines would often look very similar.
Second, as can be seen in one of the examples, some colors are hardly readable on a white background.
And finally, for me the most important, that the colormaps in vapeplot are just cycling 4 to 5 colors, not a real colormap.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

matplotwave-0.1.0.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

matplotwave-0.1.0-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file matplotwave-0.1.0.tar.gz.

File metadata

  • Download URL: matplotwave-0.1.0.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.0 CPython/3.12.3

File hashes

Hashes for matplotwave-0.1.0.tar.gz
Algorithm Hash digest
SHA256 448650f8978a505ac2669e8726a574b7985d1a117d0213b18c8306e77b933be9
MD5 cc98c9d950d9188b3ebdffd93f32709c
BLAKE2b-256 6cf1ddff5624d030aa352702f2eb123060b80d61d5ea27dd7213490b7ecd46a0

See more details on using hashes here.

File details

Details for the file matplotwave-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: matplotwave-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.0 CPython/3.12.3

File hashes

Hashes for matplotwave-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 15b92bfb6be48d007cc3bc7edb87f775a4d5ac0ff4e0a18eb614b0b6e2646582
MD5 0eb6bc2bd46741f842babab45b68e035
BLAKE2b-256 86c373fbd2c8fe8e438734f5ec162c56d9f951654dc0a2ca7bea99e9b21197f3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page