You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@climate.apache.org by hu...@apache.org on 2018/01/16 05:00:59 UTC
[1/2] climate git commit: CLIMATE-230 Line colors in time series
cycles through too few colors
Repository: climate
Updated Branches:
refs/heads/master 92b0aa3d1 -> 4c06b8c04
CLIMATE-230 Line colors in time series cycles through too few colors
Project: http://git-wip-us.apache.org/repos/asf/climate/repo
Commit: http://git-wip-us.apache.org/repos/asf/climate/commit/96ac07df
Tree: http://git-wip-us.apache.org/repos/asf/climate/tree/96ac07df
Diff: http://git-wip-us.apache.org/repos/asf/climate/diff/96ac07df
Branch: refs/heads/master
Commit: 96ac07df4cec047adccf7a31e0fce82b634ce7e1
Parents: 4cf79f3
Author: Michael Anderson <mi...@Michaels-iMac.local>
Authored: Thu Jan 4 18:22:02 2018 -0500
Committer: Michael Anderson <mi...@Michaels-iMac.local>
Committed: Thu Jan 4 18:22:02 2018 -0500
----------------------------------------------------------------------
ocw/plotter.py | 36 +++++++++++++++++++++++++++++++++++-
1 file changed, 35 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/climate/blob/96ac07df/ocw/plotter.py
----------------------------------------------------------------------
diff --git a/ocw/plotter.py b/ocw/plotter.py
index 7f9b092..f0af03f 100755
--- a/ocw/plotter.py
+++ b/ocw/plotter.py
@@ -367,9 +367,24 @@ def draw_subregions(subregions, lats, lons, fname, fmt='png', ptitle='',
fig.clf()
+def _get_colors(num_colors):
+ """
+ matplotlib will recycle colors after a certain number. This can make
+ line type charts confusing as colors will be reused. This function
+ provides a distribution of colors across the default color map
+ to better approximate uniqueness.
+
+ :param num_colors: The number of unique colors to generate.
+ :return: A color map with num_colors.
+ """
+ cmap = plt.get_cmap()
+ return [cmap(1. * i / num_colors) for i in range(num_colors)]
+
+
def draw_time_series(results, times, labels, fname, fmt='png', gridshape=(1, 1),
xlabel='', ylabel='', ptitle='', subtitles=None,
- label_month=False, yscale='linear', aspect=None):
+ label_month=False, yscale='linear', aspect=None,
+ cycle_colors=True, cmap=None):
''' Draw a time series plot.
:param results: 3D array of time series data.
@@ -415,7 +430,22 @@ def draw_time_series(results, times, labels, fname, fmt='png', gridshape=(1, 1),
:param aspect: (Optional) approximate aspect ratio of each subplot
(width / height). Default is 8.5 / 5.5
:type aspect: :class:`float`
+
+ :param cycle_colors: (Optional) flag to toggle whether to allow matlibplot
+ to re-use colors when plotting or force an evenly distributed range.
+ :type cycle_colors: :class:`bool`
+
+ :param cmap: (Optional) string or :class:`matplotlib.colors.LinearSegmentedColormap`
+ instance denoting the colormap. This must be able to be recognized by
+ `Matplotlib's get_cmap function <http://matplotlib.org/api/cm_api.html#matplotlib.cm.get_cmap>`_.
+ Maps like rainbow and spectral with wide spectrum of colors are nice choices when used with
+ the cycle_colors option. tab20, tab20b, and tab20c are good if the plot has less than 20 datasets.
+ :type cmap: :mod:`string` or :class:`matplotlib.colors.LinearSegmentedColormap`
+
'''
+ if cmap is not None:
+ set_cmap(cmap)
+
# Handle the single plot case.
if results.ndim == 2:
results = results.reshape(1, *results.shape)
@@ -448,6 +478,10 @@ def draw_time_series(results, times, labels, fname, fmt='png', gridshape=(1, 1),
# Make the plots
for i, ax in enumerate(grid):
data = results[i]
+
+ if not cycle_colors:
+ ax.set_prop_cycle('color', _get_colors(data.shape[0]))
+
if label_month:
xfmt = mpl.dates.DateFormatter('%b')
xloc = mpl.dates.MonthLocator()
[2/2] climate git commit: Merge branch 'CLIMATE-230'
Posted by hu...@apache.org.
Merge branch 'CLIMATE-230'
Project: http://git-wip-us.apache.org/repos/asf/climate/repo
Commit: http://git-wip-us.apache.org/repos/asf/climate/commit/4c06b8c0
Tree: http://git-wip-us.apache.org/repos/asf/climate/tree/4c06b8c0
Diff: http://git-wip-us.apache.org/repos/asf/climate/diff/4c06b8c0
Branch: refs/heads/master
Commit: 4c06b8c0405ddaf0937aa864e884eb90f458ec3d
Parents: 92b0aa3 96ac07d
Author: huikyole <hu...@argo.jpl.nasa.gov>
Authored: Mon Jan 15 21:00:47 2018 -0800
Committer: huikyole <hu...@argo.jpl.nasa.gov>
Committed: Mon Jan 15 21:00:47 2018 -0800
----------------------------------------------------------------------
ocw/plotter.py | 36 +++++++++++++++++++++++++++++++++++-
1 file changed, 35 insertions(+), 1 deletion(-)
----------------------------------------------------------------------