'add value along with points in matplotlib
I have the following code segment to mark the quantile points on a bivariate data distribution. The three red points correspond to quantiles of 0.1, 0.5 and 0.9 respectively. I would like to add the quantile value, i.e., 0.1, 0.5 and 0.9 along with their respective red points. How to do this in matplotlib?
import numpy as np
import matplotlib.pyplot as plt
num_samples = 2000
mu = np.array([5.0, 2.0])
r = np.array([
[ 3.40, -2.75],
[ -2.75, 1.0]
])
rng = np.random.default_rng()
y = rng.multivariate_normal(mu, r, size=num_samples)
quantile_set = np.quantile(y, [0.1,0.5,0.9], axis=0)
plt.plot(y[:,0], y[:,1], 'b.', alpha=0.25)
plt.plot(quantile_set[:,0],quantile_set[:,1],'ro',ms=4.5)
plt.grid(True)
Solution 1:[1]
One possible solution (play with offset to get the texts closer or far away from the points):
import numpy as np
import matplotlib.pyplot as plt
num_samples = 2000
mu = np.array([5.0, 2.0])
r = np.array([
[ 3.40, -2.75],
[ -2.75, 1.0]
])
rng = np.random.default_rng()
y = rng.multivariate_normal(mu, r, size=num_samples)
quantile_set = np.quantile(y, [0.1,0.5,0.9], axis=0)
plt.figure()
plt.plot(y[:,0], y[:,1], 'b.', alpha=0.25)
plt.plot(quantile_set[:,0],quantile_set[:,1],'ro',ms=4.5)
qtexts = [0.1, 0.5, 0.9]
offset = np.array([
abs(y[:, 0].min() - y[:, 0].max()) * 0.05,
abs(y[:, 1].min() - y[:, 1].max()) * 0.05
])
for q, t in zip(quantile_set, qtexts):
plt.text(*(q+offset), t, color="r", horizontalalignment="right", verticalalignment="top")
plt.grid(True)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Davide_sd |


