library(reticulate)
use_python("/anaconda3/bin/python")

Matplotlib

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)

mu = 200
sigma = 25
x = np.random.normal(mu, sigma, size=100)

fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(8, 4))

ax0.hist(x, 20, density=1, histtype='stepfilled', facecolor='g', alpha=0.75)
ax0.set_title('stepfilled')

# Create a histogram by providing the bin edges (unequally spaced).
bins = [100, 150, 180, 195, 205, 220, 250, 300]
ax1.hist(x, bins, density=1, histtype='bar', rwidth=0.8)
ax1.set_title('unequal bins')
fig.tight_layout()
plt.show()

Pandas

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

dd = pd.DataFrame(np.random.randn(10, 10)).applymap(abs)
dd = dd.cumsum()

plt.figure()
dd.plot.bar(colormap='Greens')
plt.show()

Seaborn

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="whitegrid", palette="muted")

# Load the example iris dataset
iris = sns.load_dataset("iris")

# "Melt" the dataset to "long-form" or "tidy" representation
iris = pd.melt(iris, "species", var_name="measurement")
plt.figure()

# Draw a categorical scatterplot to show each observation
sns.swarmplot(x="measurement", y="value", hue="species", palette=["r", "c", "y"], data=iris)
plt.show()

LS0tCnRpdGxlOiAiVXNpbmcgUHl0aG9uIFZpc3VhbGl6YXRpb24gTGlicmFyaWVzIGluIFJTdHVkaW8iCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyIHNldHVwfQpsaWJyYXJ5KHJldGljdWxhdGUpCnVzZV9weXRob24oIi9hbmFjb25kYTMvYmluL3B5dGhvbiIpCmBgYAoKIyMjIE1hdHBsb3RsaWIKCmBgYHtweXRob259CmltcG9ydCBudW1weSBhcyBucAppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0CgpucC5yYW5kb20uc2VlZCgwKQoKbXUgPSAyMDAKc2lnbWEgPSAyNQp4ID0gbnAucmFuZG9tLm5vcm1hbChtdSwgc2lnbWEsIHNpemU9MTAwKQoKZmlnLCAoYXgwLCBheDEpID0gcGx0LnN1YnBsb3RzKG5jb2xzPTIsIGZpZ3NpemU9KDgsIDQpKQoKYXgwLmhpc3QoeCwgMjAsIGRlbnNpdHk9MSwgaGlzdHR5cGU9J3N0ZXBmaWxsZWQnLCBmYWNlY29sb3I9J2cnLCBhbHBoYT0wLjc1KQpheDAuc2V0X3RpdGxlKCdzdGVwZmlsbGVkJykKCiMgQ3JlYXRlIGEgaGlzdG9ncmFtIGJ5IHByb3ZpZGluZyB0aGUgYmluIGVkZ2VzICh1bmVxdWFsbHkgc3BhY2VkKS4KYmlucyA9IFsxMDAsIDE1MCwgMTgwLCAxOTUsIDIwNSwgMjIwLCAyNTAsIDMwMF0KYXgxLmhpc3QoeCwgYmlucywgZGVuc2l0eT0xLCBoaXN0dHlwZT0nYmFyJywgcndpZHRoPTAuOCkKYXgxLnNldF90aXRsZSgndW5lcXVhbCBiaW5zJykKZmlnLnRpZ2h0X2xheW91dCgpCnBsdC5zaG93KCkKYGBgCgojIyMgUGFuZGFzCgpgYGB7cHl0aG9ufQppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0CgpkZCA9IHBkLkRhdGFGcmFtZShucC5yYW5kb20ucmFuZG4oMTAsIDEwKSkuYXBwbHltYXAoYWJzKQpkZCA9IGRkLmN1bXN1bSgpCgpwbHQuZmlndXJlKCkKZGQucGxvdC5iYXIoY29sb3JtYXA9J0dyZWVucycpCnBsdC5zaG93KCkKYGBgCgojIyMgU2VhYm9ybgoKYGBge3B5dGhvbn0KaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgc2VhYm9ybiBhcyBzbnMKaW1wb3J0IG1hdHBsb3RsaWIucHlwbG90IGFzIHBsdAoKc25zLnNldChzdHlsZT0id2hpdGVncmlkIiwgcGFsZXR0ZT0ibXV0ZWQiKQoKIyBMb2FkIHRoZSBleGFtcGxlIGlyaXMgZGF0YXNldAppcmlzID0gc25zLmxvYWRfZGF0YXNldCgiaXJpcyIpCgojICJNZWx0IiB0aGUgZGF0YXNldCB0byAibG9uZy1mb3JtIiBvciAidGlkeSIgcmVwcmVzZW50YXRpb24KaXJpcyA9IHBkLm1lbHQoaXJpcywgInNwZWNpZXMiLCB2YXJfbmFtZT0ibWVhc3VyZW1lbnQiKQpwbHQuZmlndXJlKCkKCiMgRHJhdyBhIGNhdGVnb3JpY2FsIHNjYXR0ZXJwbG90IHRvIHNob3cgZWFjaCBvYnNlcnZhdGlvbgpzbnMuc3dhcm1wbG90KHg9Im1lYXN1cmVtZW50IiwgeT0idmFsdWUiLCBodWU9InNwZWNpZXMiLCBwYWxldHRlPVsiciIsICJjIiwgInkiXSwgZGF0YT1pcmlzKQpwbHQuc2hvdygpCmBgYAoK