Illustration of the Gaussian mechanism. Created with the following Python code. Released by the author to public domain.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import scipy.stats as stats
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
_, ax = plt.subplots()
mu, sigma = 0, 2.
x = np.linspace(mu - 3*sigma - 1, mu + 3*sigma + 1, 100)
d1 = lambda x: stats.norm.pdf(x, mu, sigma)
d2 = lambda x: stats.norm.pdf(x, mu + 1, sigma)
ax.plot(x, d1(x), c=colors.CSS4_COLORS['royalblue'], linewidth=4, alpha=.7)
ax.plot(x, d2(x), c=colors.CSS4_COLORS['crimson'], linewidth=4, alpha=.7)
# Hide the right and top spines
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_position(('data', 0))
ax.tick_params(axis='x', length=6, width=1)
plt.xticks(size = 16, alpha=.7)
ax.yaxis.set_visible(False)
ax.annotate(r'$\mathcal{N}(0,4)$',
xy=(-1.1, d1(-1)),
xytext=(-2.5, d1(-1) + .01),
horizontalalignment='right',
fontsize=20,
arrowprops=dict(facecolor='black', alpha=.5, headlength=5, headwidth=5, width=1))
ax.annotate(r'$\mathcal{N}(1,4)$',
xy=(2.1, d2(2)),
xytext=(4, d2(2) + .01),
horizontalalignment='left',
fontsize=20,
arrowprops=dict(facecolor='black', alpha=.5, headlength=5, headwidth=5, width=1))
# plt.show()
plt.savefig('gaussian.png', transparent=True, bbox_inches='tight')