Minimal, beautiful (+ highly-customizable) styles for Matplotlib.
Project description
ambivalent
🤷🏻♂️
Sam Foreman 2023-12-29
$\longrightarrow$
opinionated
ambivalent
Clean, simple style for Matplotlib figures.
Transparent backgrounds with grey text
$\textcolor{#838383}{\blacksquare}$ that are accessible / legible and
{light, dark}
-mode independent.
Examples[^1]
More Examples
Even more…
Figure 9: Figure from l2hmc-qcd
Notebook
InferenceData
Figure 10: $\varepsilon_{x}$ during training
Figure 11: $\varepsilon_{x}$ during training
Figure 12: Figure from l2hmc-qcd
Notebook
Getting Started
- Use
ambivalend.STYLES['ambivalent']
as the default style formatplotlib
.
import matplotlib.pyplot as plt
from ambivalent import STYLES
plt.style.use(STYLES['ambivalent'])
seaborn
Tips Dataset
View Code
import seaborn as sns
tips = sns.load_dataset("tips")
tips.head()
fig, ax = plt.subplots(figsize=(6, 6)) # , ncols=2)
_ = sns.kdeplot(
data=tips, x="total_bill", hue="size",
fill=True, common_norm=False, palette="flare_r",
alpha=.3, linewidth=0,
ax=ax, # [0],
)
_ = ax.set_ylabel('')
# _ = sns.kdeplot(
# data=tips, x="tip", hue="size",
# fill=True, common_norm=False, palette="crest",
# alpha=.3, linewidth=0,
# ax=ax[1],
# )
seaborn
Scatter Plot
View Code
import seaborn as sns
import matplotlib.pyplot as plt
# Load the example diamonds dataset
diamonds = sns.load_dataset("diamonds")
# Draw a scatter plot while assigning point colors and sizes to different
# variables in the dataset
f, ax = plt.subplots(figsize=(6, 6))
_ = sns.despine(f, left=True, bottom=True)
_ = clarity_ranking = ["I1", "SI2", "SI1", "VS2", "VS1", "VVS2", "VVS1", "IF"]
_ = sns.scatterplot(x="carat", y="price",
hue="clarity", size="depth",
palette="flare",
hue_order=clarity_ranking,
sizes=(1, 8), linewidth=0,
data=diamonds, ax=ax)
Histogram + Scatter Plot
View Code
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# Simulate data from a bivariate Gaussian
n = 10000
mean = [0, 0]
cov = [(2, .4), (.4, .2)]
rng = np.random.RandomState(0)
x, y = rng.multivariate_normal(mean, cov, n).T
# Draw a combo histogram and scatterplot with density contours
f, ax = plt.subplots(figsize=(6, 6))
_ = sns.scatterplot(x=x, y=y, s=5, color="#666666", alpha=0.3)
_ = sns.histplot(x=x, y=y, bins=50, pthresh=.1, cmap="flare_r")
_ = sns.kdeplot(x=x, y=y, levels=5, color="w", linewidths=1)
_ = ax.set_xlabel('x')
_ = ax.set_ylabel('y')
_ = plt.show()
Jointplot
View Code
import seaborn as sns
# Load the penguins dataset
penguins = sns.load_dataset("penguins")
# Show the joint distribution using kernel density estimation
import matplotlib as mpl
with mpl.rc_context(plt.rcParams.update({'axes.grid': False})):
g = sns.jointplot(
data=penguins,
x="bill_length_mm",
y="bill_depth_mm",
hue="species",
# kind="kde",
edgecolors='none',
alpha=0.4,
)
_ = plt.grid(False)
plt.show()
Matplotlib Histograms
View Code
import matplotlib.pyplot as plt
import numpy as np
n_bins = 10
x = np.random.randn(1000, 3)
plt.rcParams['axes.grid'] = True
fig, ((ax0, ax1), (ax2, ax3)) = plt.subplots(nrows=2, ncols=2)
colors = ['#333333', '#666666', '#999999']
ax0.hist(x, n_bins, density=True, histtype='bar', color=colors, label=colors)
_ = ax0.legend()
_ = ax0.set_title('bars with legend')
_ = ax1.hist(x, n_bins, density=True, histtype='bar', stacked=True, alpha=0.4)
_ = ax1.set_title('stacked bar')
_ = ax2.hist(x, n_bins, histtype='step', stacked=True, fill=False)
_ = ax2.set_title('stack step (unfilled)')
# Make a multiple-histogram of data-sets with different length.
x_multi = [np.random.randn(n) for n in [10000, 5000, 2000]]
_ = ax3.hist(x_multi, n_bins, histtype='bar')
_ = ax3.set_title('different sample sizes')
_ = fig.tight_layout()
plt.show()
Status
Last Updated: 12/29/2023 @ 10:42:06
[^1]: Examples from Matplotlib Examples
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
ambivalent-0.1.0.tar.gz
(67.0 MB
view hashes)
Built Distribution
ambivalent-0.1.0-py3-none-any.whl
(26.7 kB
view hashes)
Close
Hashes for ambivalent-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57ad60d2f66606a6905504e1857de6460ce0dd8e7b34a7b982cd4fe185124e62 |
|
MD5 | daf2006199423b949adb5b50d349d789 |
|
BLAKE2b-256 | 839fa7b0194d6b83c7d25849e55987c0001e990ed95cf6a0f73b028dca2f9b96 |