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
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()
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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
448650f8978a505ac2669e8726a574b7985d1a117d0213b18c8306e77b933be9
|
|
| MD5 |
cc98c9d950d9188b3ebdffd93f32709c
|
|
| BLAKE2b-256 |
6cf1ddff5624d030aa352702f2eb123060b80d61d5ea27dd7213490b7ecd46a0
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15b92bfb6be48d007cc3bc7edb87f775a4d5ac0ff4e0a18eb614b0b6e2646582
|
|
| MD5 |
0eb6bc2bd46741f842babab45b68e035
|
|
| BLAKE2b-256 |
86c373fbd2c8fe8e438734f5ec162c56d9f951654dc0a2ca7bea99e9b21197f3
|