From cc66626e0852bce53fadad5db1e908fd1df2c8e2 Mon Sep 17 00:00:00 2001 From: Dietrich Brunn Date: Wed, 4 Jan 2017 15:25:40 +0100 Subject: [PATCH] Fixed frontpage plots and generate them together with the docs (bug #7704). * Also fixed two pylab examples. * Fixed _static/mpl.css div.responsive_screenshots * Generate frontpage pngs automatically on html build. * Also made the file doc/make.py more PEP8 conform und made the linter happier. That consisted mainly of adding blank lines and docstrings to the functions. --- doc/_static/.gitignore | 5 + doc/_static/contour_frontpage.png | Bin 4015 -> 0 bytes doc/_static/histogram_frontpage.png | Bin 3195 -> 0 bytes doc/_static/membrane_frontpage.png | Bin 5230 -> 0 bytes doc/_static/mpl.css | 4 +- doc/_static/surface3d_frontpage.png | Bin 8755 -> 0 bytes doc/make.py | 94 +++++++++++++++--- examples/frontpage/plot_3D.py | 4 +- examples/frontpage/plot_contour.py | 4 +- examples/frontpage/plot_histogram.py | 4 +- examples/frontpage/plot_membrane.py | 4 +- .../pie_and_polar_charts/pie_demo_features.py | 66 ++++++------ examples/pylab_examples/polar_demo.py | 6 +- 13 files changed, 127 insertions(+), 64 deletions(-) create mode 100644 doc/_static/.gitignore delete mode 100644 doc/_static/contour_frontpage.png delete mode 100644 doc/_static/histogram_frontpage.png delete mode 100644 doc/_static/membrane_frontpage.png delete mode 100644 doc/_static/surface3d_frontpage.png diff --git a/doc/_static/.gitignore b/doc/_static/.gitignore new file mode 100644 index 000000000000..bbdc34458abc --- /dev/null +++ b/doc/_static/.gitignore @@ -0,0 +1,5 @@ +contour_frontpage.png +histogram_frontpage.png +membrane_frontpage.png +surface3d_frontpage.png + diff --git a/doc/_static/contour_frontpage.png b/doc/_static/contour_frontpage.png deleted file mode 100644 index dfa518a2176eb1b922b37cd664946903a1673b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4015 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 diff --git a/doc/_static/histogram_frontpage.png b/doc/_static/histogram_frontpage.png deleted file mode 100644 index a4ff5ed9f32b3259568145f560925e6cc3d45db4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3195 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 B-^>62 diff --git a/doc/_static/membrane_frontpage.png b/doc/_static/membrane_frontpage.png deleted file mode 100644 index d1119b7ac47934d808faf27e4b6fe65bc44b13f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5230 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 E0}nI?;{X5v diff --git a/doc/_static/mpl.css b/doc/_static/mpl.css index 0b5bce477ede..bf571bcbe8cc 100644 --- a/doc/_static/mpl.css +++ b/doc/_static/mpl.css @@ -738,8 +738,8 @@ div.responsive_screenshots { margin: auto; /* Do not go beyond 1:1 scale (and ensure a 1x4 tight layout) */ - max-width: 648px; /* at most 4 x 1:1 subfig width */ - max-height: 139px; /* at most 1 x 1:1 subfig height */ + max-width: 640px; /* at most 4 x 1:1 subfig width */ + max-height: 120px; /* at most 1 x 1:1 subfig height */ } /* To avoid subfigure parts outside of the responsive_screenshots */ diff --git a/doc/_static/surface3d_frontpage.png b/doc/_static/surface3d_frontpage.png deleted file mode 100644 index 065c6f17113b0f0e7da67b4a90b185720c7b7a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8755 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 ZDet8vH~Qlr_S*FUkdsoDtdKAc`hR$P9drNy diff --git a/doc/make.py b/doc/make.py index 8882c86f6da3..27dd1b7719a0 100755 --- a/doc/make.py +++ b/doc/make.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +"""Wrapper script for calling Sphinx. """ from __future__ import print_function import glob @@ -7,9 +8,12 @@ import sys import re import argparse +import subprocess import matplotlib + def copy_if_out_of_date(original, derived): + """Copy file only if newer as target or if target does not exist. """ if (not os.path.exists(derived) or os.stat(derived).st_mtime < os.stat(original).st_mtime): try: @@ -22,7 +26,9 @@ def copy_if_out_of_date(original, derived): else: raise + def check_build(): + """Create target build directories if necessary. """ build_dirs = ['build', 'build/doctrees', 'build/html', 'build/latex', 'build/texinfo', '_static', '_templates'] for d in build_dirs: @@ -31,14 +37,58 @@ def check_build(): except OSError: pass + def doctest(): + """Execute Sphinx 'doctest' target. """ os.system('sphinx-build -b doctest -d build/doctrees . build/doctest') + def linkcheck(): + """Execute Sphinx 'linkcheck' target. """ os.system('sphinx-build -b linkcheck -d build/doctrees . build/linkcheck') + +# For generating PNGs of the top row of index.html: +FRONTPAGE_PY_PATH = "../examples/frontpage/" # python scripts location +FRONTPAGE_PNG_PATH = "_static/" # png files location +# png files and corresponding generation scripts: +FRONTPAGE_PNGS = {"surface3d_frontpage.png": "plot_3D.py", + "contour_frontpage.png": "plot_contour.py", + "histogram_frontpage.png": "plot_histogram.py", + "membrane_frontpage.png": "plot_membrane.py"} + + +def generate_frontpage_pngs(only_if_needed=True): + """Executes the scripts for PNG generation of the top row of index.html. + + If `only_if_needed` is `True`, then the PNG file is only generated, if it + doesn't exist or if the python file is newer. + + Note that the element `div.responsive_screenshots` in the file + `_static/mpl.css` has the height and cumulative width of the used PNG files + as attributes. This ensures that the magnification of those PNGs is <= 1. + """ + for fn_png, fn_py in FRONTPAGE_PNGS.items(): + pn_png = os.path.join(FRONTPAGE_PNG_PATH, fn_png) # get full paths + pn_py = os.path.join(FRONTPAGE_PY_PATH, fn_py) + + # Read file modification times: + mtime_py = os.path.getmtime(pn_py) + mtime_png = (os.path.getmtime(pn_png) if os.path.exists(pn_png) else + mtime_py - 1) # set older time, if file doesn't exist + + if only_if_needed and mtime_py <= mtime_png: + continue # do nothing if png is newer + + # Execute python as subprocess (preferred over os.system()): + subprocess.check_call(["python", pn_py]) # raises CalledProcessError() + os.rename(fn_png, pn_png) # move file to _static/ directory + + def html(buildername='html'): + """Build Sphinx 'html' target. """ check_build() + generate_frontpage_pngs() rc = '../lib/matplotlib/mpl-data/matplotlibrc' default_rc = os.path.join(matplotlib._get_data_path(), 'matplotlibrc') @@ -62,20 +112,24 @@ def html(buildername='html'): shutil.copy('../CHANGELOG', 'build/%s/_static/CHANGELOG' % buildername) + def htmlhelp(): + """Build Sphinx 'htmlhelp' target. """ html(buildername='htmlhelp') # remove scripts from index.html with open('build/htmlhelp/index.html', 'r+') as fh: content = fh.read() fh.seek(0) content = re.sub(r'', '', content, - flags=re.MULTILINE| re.DOTALL) + flags=re.MULTILINE | re.DOTALL) fh.write(content) fh.truncate() + def latex(): + """Build Sphinx 'latex' target. """ check_build() - #figs() + # figs() if sys.platform != 'win32': # LaTeX format. if os.system('sphinx-build -b latex -d build/doctrees . build/latex'): @@ -92,9 +146,11 @@ def latex(): else: print('latex build has not been tested on windows') + def texinfo(): + """Build Sphinx 'texinfo' target. """ check_build() - #figs() + # figs() if sys.platform != 'win32': # Texinfo format. if os.system( @@ -112,7 +168,9 @@ def texinfo(): else: print('texinfo build has not been tested on windows') + def clean(): + """Remove generated files. """ shutil.rmtree("build", ignore_errors=True) shutil.rmtree("examples", ignore_errors=True) for pattern in ['mpl_examples/api/*.png', @@ -126,21 +184,27 @@ def clean(): for filename in glob.glob(pattern): if os.path.exists(filename): os.remove(filename) + for fn in FRONTPAGE_PNGS.keys(): # remove generated PNGs + pn = os.path.join(FRONTPAGE_PNG_PATH, fn) + if os.path.exists(pn): + os.remove(os.path.join(pn)) + -def all(): - #figs() +def build_all(): + """Build Sphinx 'html' and 'latex' target. """ + # figs() html() latex() funcd = { - 'html' : html, - 'htmlhelp' : htmlhelp, - 'latex' : latex, - 'texinfo' : texinfo, - 'clean' : clean, - 'all' : all, - 'doctest' : doctest, + 'html': html, + 'htmlhelp': htmlhelp, + 'latex': latex, + 'texinfo': texinfo, + 'clean': clean, + 'all': build_all, + 'doctest': doctest, 'linkcheck': linkcheck, } @@ -168,8 +232,8 @@ def all(): # This is special processing that applies on platforms that don't deal # with git symlinks -- probably only MS windows. delete = False - with open(link, 'r') as content: - delete = target == content.read() + with open(link, 'r') as link_content: + delete = target == link_content.read() if delete: symlink_warnings.append('deleted: doc/{0}'.format(link)) os.unlink(link) @@ -186,7 +250,7 @@ def all(): if sys.platform == 'win32' and len(symlink_warnings) > 0: print('The following items related to symlinks will show up ' 'as spurious changes in your \'git status\':\n\t{0}' - .format('\n\t'.join(symlink_warnings))) + .format('\n\t'.join(symlink_warnings))) parser = argparse.ArgumentParser(description='Build matplotlib docs') parser.add_argument("cmd", help=("Command to execute. Can be multiple. " diff --git a/examples/frontpage/plot_3D.py b/examples/frontpage/plot_3D.py index ddc3ee112577..d08b52f54b24 100644 --- a/examples/frontpage/plot_3D.py +++ b/examples/frontpage/plot_3D.py @@ -24,7 +24,7 @@ region = np.s_[5:50, 5:50] x, y, z = x[region], y[region], z[region] -fig, ax = plt.subplots(subplot_kw=dict(projection='3d'), figsize=(1.62, 1.38)) +fig, ax = plt.subplots(subplot_kw=dict(projection='3d')) ls = LightSource(270, 45) # To use a custom hillshading mode, override the built-in shading and pass @@ -35,4 +35,4 @@ ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) -fig.savefig("surface3d_frontpage.png") +fig.savefig("surface3d_frontpage.png", dpi=25) # results in 160x120 px image diff --git a/examples/frontpage/plot_contour.py b/examples/frontpage/plot_contour.py index 4e86fe1f8569..9622cc015088 100644 --- a/examples/frontpage/plot_contour.py +++ b/examples/frontpage/plot_contour.py @@ -23,7 +23,7 @@ levels = np.linspace(-2.0, 1.601, 40) norm = cm.colors.Normalize(vmax=abs(Z).max(), vmin=-abs(Z).max()) -fig, ax = plt.subplots(figsize=(1.62, 1.38)) +fig, ax = plt.subplots() cset1 = ax.contourf( X, Y, Z, levels, norm=norm) @@ -31,4 +31,4 @@ ax.set_ylim(-3, 3) ax.set_xticks([]) ax.set_yticks([]) -fig.savefig("contour_frontpage.png") +fig.savefig("contour_frontpage.png", dpi=25) # results in 160x120 px image diff --git a/examples/frontpage/plot_histogram.py b/examples/frontpage/plot_histogram.py index b9ff71174faa..e9c5299df7d6 100644 --- a/examples/frontpage/plot_histogram.py +++ b/examples/frontpage/plot_histogram.py @@ -13,10 +13,10 @@ random_state = np.random.RandomState(19680801) X = random_state.randn(10000) -fig, ax = plt.subplots(figsize=(1.62, 1.38)) +fig, ax = plt.subplots() ax.hist(X, bins=25, normed=True) x = np.linspace(-5, 5, 1000) ax.plot(x, 1 / np.sqrt(2*np.pi) * np.exp(-(x**2)/2), linewidth=4) ax.set_xticks([]) ax.set_yticks([]) -fig.savefig("histogram_frontpage.png") +fig.savefig("histogram_frontpage.png", dpi=25) # results in 160x120 px image diff --git a/examples/frontpage/plot_membrane.py b/examples/frontpage/plot_membrane.py index f469ad1a087b..522ba78fb856 100644 --- a/examples/frontpage/plot_membrane.py +++ b/examples/frontpage/plot_membrane.py @@ -16,10 +16,10 @@ x = np.fromfile(datafile, np.float32) # 0.0005 is the sample interval -fig, ax = plt.subplots(figsize=(1.62, 1.38)) +fig, ax = plt.subplots() ax.plot(x, linewidth=4) ax.set_xlim(5000, 6000) ax.set_ylim(-0.6, 0.1) ax.set_xticks([]) ax.set_yticks([]) -fig.savefig("membrane_frontpage.png") +fig.savefig("membrane_frontpage.png", dpi=25) # results in 160x120 px image diff --git a/examples/pie_and_polar_charts/pie_demo_features.py b/examples/pie_and_polar_charts/pie_demo_features.py index 97b374aead33..89750ca6c162 100644 --- a/examples/pie_and_polar_charts/pie_demo_features.py +++ b/examples/pie_and_polar_charts/pie_demo_features.py @@ -16,48 +16,40 @@ rotated counter-clockwise by 90 degrees, and the frog slice starts on the positive y-axis. """ +import numpy as np import matplotlib.pyplot as plt - -# The slices will be ordered and plotted counter-clockwise. +# Pie chart, where the slices will be ordered and plotted counter-clockwise: labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' sizes = [15, 30, 45, 10] explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') -plt.pie(sizes, explode=explode, labels=labels, - autopct='%1.1f%%', shadow=True, startangle=90) -# Set aspect ratio to be equal so that pie is drawn as a circle. -plt.axis('equal') - -fig = plt.figure() -ax = fig.gca() -import numpy as np - -# Fixing random state for reproducibility -np.random.seed(19680801) - - -ax.pie(np.random.random(4), explode=explode, labels=labels, - autopct='%1.1f%%', shadow=True, startangle=90, - radius=0.25, center=(0, 0), frame=True) -ax.pie(np.random.random(4), explode=explode, labels=labels, - autopct='%1.1f%%', shadow=True, startangle=90, - radius=0.25, center=(1, 1), frame=True) -ax.pie(np.random.random(4), explode=explode, labels=labels, - autopct='%1.1f%%', shadow=True, startangle=90, - radius=0.25, center=(0, 1), frame=True) -ax.pie(np.random.random(4), explode=explode, labels=labels, - autopct='%1.1f%%', shadow=True, startangle=90, - radius=0.25, center=(1, 0), frame=True) - -ax.set_xticks([0, 1]) -ax.set_yticks([0, 1]) -ax.set_xticklabels(["Sunny", "Cloudy"]) -ax.set_yticklabels(["Dry", "Rainy"]) -ax.set_xlim((-0.5, 1.5)) -ax.set_ylim((-0.5, 1.5)) - -# Set aspect ratio to be equal so that pie is drawn as a circle. -ax.set_aspect('equal') +fg1, ax1 = plt.subplots() +ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', + shadow=True, startangle=90) +ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle. + + +# Plot four Pie charts in a 2x2 grid: +pie_data = [np.roll(sizes, i) for i in range(4)] # generate some data +pie_centerpos = [(0, 0), (0, 1), (1, 0), (1, 1)] # the grid positions + +fg2, ax2 = plt.subplots() +for data, cpos in zip(pie_data, pie_centerpos): + _, txts = ax2.pie(data, explode=explode, shadow=True, startangle=90, + radius=0.35, center=cpos, frame=True, labeldistance=.7) + # Make texts include number and labels: + for t, l, d in zip(txts, labels, data): + t.set_text("%s\n %.1f%%" % (l, d)) + t.set_horizontalalignment("center") + t.set_fontsize(8) + +ax2.set_xticks([0, 1]) +ax2.set_yticks([0, 1]) +ax2.set_xticklabels(["Sunny", "Cloudy"]) +ax2.set_yticklabels(["Dry", "Rainy"]) +ax2.set_xlim((-0.5, 1.5)) +ax2.set_ylim((-0.5, 1.5)) +ax2.set_aspect('equal') # Equal aspect ratio ensures that the pie is a circle. plt.show() diff --git a/examples/pylab_examples/polar_demo.py b/examples/pylab_examples/polar_demo.py index 149f505b2ba3..b2b5843e8fa1 100644 --- a/examples/pylab_examples/polar_demo.py +++ b/examples/pylab_examples/polar_demo.py @@ -5,12 +5,14 @@ import matplotlib.pyplot as plt -r = np.arange(0, 3.0, 0.01) +r = np.arange(0, 2, 0.01) theta = 2 * np.pi * r ax = plt.subplot(111, projection='polar') ax.plot(theta, r) -ax.set_rmax(2.0) +ax.set_rmax(2) +ax.set_rticks([0.5, 1, 1.5, 2]) # less radial ticks +ax.set_rlabel_position(-22.5) # get radial labels away from plotted line ax.grid(True) ax.set_title("A line plot on a polar axis", va='bottom')