From bb46650d353757bed4d6dfcf54d1c42999a28e79 Mon Sep 17 00:00:00 2001 From: ImportanceOfBeingErnest Date: Wed, 20 Jun 2018 14:06:57 +0200 Subject: [PATCH] Doc: beautify usetex demo example --- .../usetex_demo.py | 84 ++++++++----------- 1 file changed, 37 insertions(+), 47 deletions(-) diff --git a/examples/text_labels_and_annotations/usetex_demo.py b/examples/text_labels_and_annotations/usetex_demo.py index 86d4587c6dc4..390ddea6c646 100644 --- a/examples/text_labels_and_annotations/usetex_demo.py +++ b/examples/text_labels_and_annotations/usetex_demo.py @@ -3,77 +3,67 @@ Usetex Demo =========== +Shows how to use latex in a plot. + +Also refer to the :doc:`/tutorials/text/usetex` guide. """ -import matplotlib -matplotlib.rc('text', usetex=True) -import matplotlib.pyplot as plt + import numpy as np +import matplotlib.pyplot as plt +plt.rc('text', usetex=True) # interface tracking profiles N = 500 delta = 0.6 X = np.linspace(-1, 1, N) plt.plot(X, (1 - np.tanh(4 * X / delta)) / 2, # phase field tanh profiles - X, (X + 1) / 2, # level set distance function - X, (1.4 + np.tanh(4 * X / delta)) / 4, # composition profile + X, (1.4 + np.tanh(4 * X / delta)) / 4, "C2", # composition profile X, X < 0, 'k--') # sharp interface # legend -plt.legend(('phase field', 'level set', 'composition', 'sharp interface'), - shadow=True, loc=(0.01, 0.55)) - -ltext = plt.gca().get_legend().get_texts() -plt.setp(ltext[0], fontsize=20) -plt.setp(ltext[1], fontsize=20) -plt.setp(ltext[2], fontsize=20) -plt.setp(ltext[3], fontsize=20) +plt.legend(('phase field', 'level set', 'sharp interface'), + shadow=True, loc=(0.01, 0.48), handlelength=1.5, fontsize=16) # the arrow -height = 0.1 -offset = 0.02 -plt.plot((-delta / 2., delta / 2), (height, height), 'k', linewidth=2) -plt.plot((-delta / 2, -delta / 2 + offset * 2), (height, height - offset), - 'k', linewidth=2) -plt.plot((-delta / 2, -delta / 2 + offset * 2), (height, height + offset), - 'k', linewidth=2) -plt.plot((delta / 2, delta / 2 - offset * 2), (height, height - offset), - 'k', linewidth=2) -plt.plot((delta / 2, delta / 2 - offset * 2), (height, height + offset), - 'k', linewidth=2) -plt.text(-0.06, height - 0.06, r'$\delta$', {'color': 'k', 'fontsize': 24}) +plt.annotate("", xy=(-delta / 2., 0.1), xycoords='data', + xytext=(delta / 2., 0.1), textcoords='data', + arrowprops=dict(arrowstyle="<->", connectionstyle="arc3")) +plt.text(0, 0.1, r'$\delta$', + {'color': 'k', 'fontsize': 24, 'ha' : 'center', 'va' : 'center', + 'bbox' : dict(boxstyle="round", fc="w", ec="k", pad=0.2)}) -# X-axis label -plt.xticks((-1, 0, 1), ('-1', '0', '1'), color='k', size=20) +# Use tex in labels +plt.xticks((-1, 0, 1), ('$-1$', r'$\pm 0$', '$+1$'), color='k', size=20) -# Left Y-axis labels -plt.ylabel(r'\bf{phase field} $\phi$', {'color': 'b', 'fontsize': 20}) -plt.yticks((0, 0.5, 1), ('0', '.5', '1'), color='k', size=20) +# Left Y-axis labels, combine math mode and text mode +plt.ylabel(r'\bf{phase field} $\phi$', {'color': 'C0', 'fontsize': 20}) +plt.yticks((0, 0.5, 1), (r'\bf{0}', r'\bf{.5}', r'\bf{1}'), color='k', size=20) # Right Y-axis labels -plt.text(1.05, 0.5, r"\bf{level set} $\phi$", {'color': 'g', 'fontsize': 20}, +plt.text(1.02, 0.5, r"\bf{level set} $\phi$", {'color': 'C2', 'fontsize': 20}, horizontalalignment='left', verticalalignment='center', rotation=90, - clip_on=False) -plt.text(1.01, -0.02, "-1", {'color': 'k', 'fontsize': 20}) -plt.text(1.01, 0.98, "1", {'color': 'k', 'fontsize': 20}) -plt.text(1.01, 0.48, "0", {'color': 'k', 'fontsize': 20}) + clip_on=False, + transform=plt.gca().transAxes) +# Use multiline environment inside a `text`. # level set equations -plt.text(0.1, 0.85, - r'$|\nabla\phi| = 1,$ \newline $ \frac{\partial \phi}{\partial t}' - r'+ U|\nabla \phi| = 0$', - {'color': 'g', 'fontsize': 20}) +eq1 = r"\begin{eqnarray*}" + \ + r"|\nabla\phi| &=& 1,\\" + \ + r"\frac{\partial \phi}{\partial t} + U|\nabla \phi| &=& 0 " + \ + r"\end{eqnarray*}" +plt.text(1, 0.9, eq1, {'color': 'C2', 'fontsize': 18}, va="top", ha="right") # phase field equations -plt.text(0.2, 0.15, - r'$\mathcal{F} = \int f\left( \phi, c \right) dV,$ \newline ' - r'$ \frac{ \partial \phi } { \partial t } = -M_{ \phi } ' - r'\frac{ \delta \mathcal{F} } { \delta \phi }$', - {'color': 'b', 'fontsize': 20}) +eq2 = r'\begin{eqnarray*}' + \ + r'\mathcal{F} &=& \int f\left( \phi, c \right) dV, \\ ' + \ + r'\frac{ \partial \phi } { \partial t } &=& -M_{ \phi } ' + \ + r'\frac{ \delta \mathcal{F} } { \delta \phi }' + \ + r'\end{eqnarray*}' +plt.text(0.18, 0.18, eq2, {'color': 'C0', 'fontsize': 16}) -# these went wrong in pdf in a previous version -plt.text(-.9, .42, r'gamma: $\gamma$', {'color': 'r', 'fontsize': 20}) -plt.text(-.9, .36, r'Omega: $\Omega$', {'color': 'b', 'fontsize': 20}) +plt.text(-1, .30, r'gamma: $\gamma$', {'color': 'r', 'fontsize': 20}) +plt.text(-1, .18, r'Omega: $\Omega$', {'color': 'b', 'fontsize': 20}) plt.show()