From 1282f12bdcc53081e5a089fe4eaf78c1d8a96962 Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Thu, 22 May 2014 18:30:56 +0200 Subject: [PATCH] reporting: add new option graphShowInLegend to addSeries --- .../dseriesReporting.tex | 2 +- doc/dynare.texi | 7 ++++- matlab/reports/@graph/writeGraphFile.m | 2 +- .../reports/@report_series/getNameForLegend.m | 31 +++++++++++++++++++ matlab/reports/@report_series/report_series.m | 2 ++ .../@report_series/writeSeriesForGraph.m | 1 + 6 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 matlab/reports/@report_series/getNameForLegend.m diff --git a/doc/dseries-and-reporting/dseriesReporting.tex b/doc/dseries-and-reporting/dseriesReporting.tex index e05e022a1..4b46bf9ef 100644 --- a/doc/dseries-and-reporting/dseriesReporting.tex +++ b/doc/dseries-and-reporting/dseriesReporting.tex @@ -598,7 +598,7 @@ \end{itemize} \item \texttt{addSeries(\ldots)}: Add a series to the current \texttt{Graph} or \texttt{Table} \begin{itemize} - \item \textbf{Options}: \texttt{data}, \texttt{graphHline}, \texttt{graphLegendName}, \texttt{graphLineColor}, \texttt{graphLineStyle}, \texttt{graphLineWidth}, \texttt{graphMarker}, \texttt{graphMarkerEdgeColor}, \texttt{graphMarkerFaceColor}, \texttt{graphMarkerSize}, \texttt{graphMiscTikzAddPlotOptions}, \texttt{graphVline}, \texttt{tableDataRhs}, \texttt{tableRowColor}, \texttt{tableRowIndent}, \texttt{tableShowMarkers}, \texttt{tableAlignRight}, \texttt{tableMarkerLimit}, \texttt{tableNegColor}, \texttt{tablePosColor}, \texttt{tableSubSectionHeader}, \texttt{zeroTol} + \item \textbf{Options}: \texttt{data}, \texttt{graphHline}, \texttt{graphLegendName}, \texttt{graphLineColor}, \texttt{graphLineStyle}, \texttt{graphLineWidth}, \texttt{graphMarker}, \texttt{graphMarkerEdgeColor}, \texttt{graphMarkerFaceColor}, \texttt{graphMarkerSize}, \texttt{graphMiscTikzAddPlotOptions}, \texttt{graphShowInLegend}, \texttt{graphVline}, \texttt{tableDataRhs}, \texttt{tableRowColor}, \texttt{tableRowIndent}, \texttt{tableShowMarkers}, \texttt{tableAlignRight}, \texttt{tableMarkerLimit}, \texttt{tableNegColor}, \texttt{tablePosColor}, \texttt{tableSubSectionHeader}, \texttt{zeroTol} \end{itemize} \end{itemize} \end{frame} diff --git a/doc/dynare.texi b/doc/dynare.texi index 2987bd5bf..61a65797b 100644 --- a/doc/dynare.texi +++ b/doc/dynare.texi @@ -11162,6 +11162,7 @@ command. Default: @code{`!'} @end table @end defmethod +@anchor{addGraph} @defmethod Report addGraph data, graphDirName, graphName, graphSize, height, showGrid, showLegend, showLegendBox, legendLocation, legendOrientation, legendFontSize, miscTikzAxisOptions, miscTikzPictureOptions, seriesToUse, shade, shadeColor, shadeOpacity, title, width, xlabel, ylabel, xAxisTight, xrange, xTicks, xTickLabels, xTickLabelAnchor, xTickLabelRotation, yAxisTight, yrange, showZeroline Adds a @code{Graph} to a @code{Section}. @optionshead @@ -11356,7 +11357,7 @@ Whether or not to show vertical lines separating the columns. Default: @code{fal @end defmethod @anchor{addSeries} -@defmethod Report addSeries data, graphHline, graphLegendName, graphLineColor, graphLineStyle, graphLineWidth, graphMarker, graphMarkerEdgeColor, graphMarkerFaceColor, graphMarkerSize, graphMiscTikzAddPlotOptions, graphVline, tableDataRhs, tableRowColor, tableRowIndent, tableShowMarkers, tableAlignRight, tableNegColor, tablePosColor, tableSubSectionHeader, zeroTol +@defmethod Report addSeries data, graphHline, graphLegendName, graphLineColor, graphLineStyle, graphLineWidth, graphMarker, graphMarkerEdgeColor, graphMarkerFaceColor, graphMarkerSize, graphMiscTikzAddPlotOptions, graphShowInLegend, graphVline, tableDataRhs, tableRowColor, tableRowIndent, tableShowMarkers, tableAlignRight, tableNegColor, tablePosColor, tableSubSectionHeader, zeroTol Adds a @code{Series} to a @code{Graph} or a @code{Table}. @optionshead @table @code @@ -11404,6 +11405,10 @@ above, you can pass a string such as the following to this option: used for desired @code{PGFPLOTS/Ti}@i{k}@code{Z} options that have not been incorporated into Dynare Reproting. Default: @code{empty} +@item graphShowInLegend, @code{BOOLEAN} +Whether or not to show this series in the legend, given that the +@ref{showLegend} option was passed to @ref{addGraph}. Default: @code{true} + @item graphVline, @code{dates} Use this option to draw a vertical line at a given date. Default: @code{empty} diff --git a/matlab/reports/@graph/writeGraphFile.m b/matlab/reports/@graph/writeGraphFile.m index b3794168f..2b706a8fe 100644 --- a/matlab/reports/@graph/writeGraphFile.m +++ b/matlab/reports/@graph/writeGraphFile.m @@ -183,7 +183,7 @@ end for i=1:ne o.series{i}.writeSeriesForGraph(fid, dd); if o.showLegend - le = o.series{i}.getTexName(); + le = o.series{i}.getNameForLegend(); if ~isempty(le) fprintf(fid, '\\addlegendentry{%s}\n', le); end diff --git a/matlab/reports/@report_series/getNameForLegend.m b/matlab/reports/@report_series/getNameForLegend.m new file mode 100644 index 000000000..0748a8de2 --- /dev/null +++ b/matlab/reports/@report_series/getNameForLegend.m @@ -0,0 +1,31 @@ +function s = getNameForLegend(o) +%function s = getNameForLegend(o) + +% Copyright (C) 2014 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see . + +if isempty(o.data) || ~o.graphShowInLegend + % for the case when there is no data in the series + % e.g. graphVline was passed + % or when the user does not want this series shown in + % the legend + s = ''; +else + assert(size(o.data,2) == 1); + s = o.data.tex{:}; +end +end \ No newline at end of file diff --git a/matlab/reports/@report_series/report_series.m b/matlab/reports/@report_series/report_series.m index 7c708df18..0fcb61137 100644 --- a/matlab/reports/@report_series/report_series.m +++ b/matlab/reports/@report_series/report_series.m @@ -41,6 +41,8 @@ o.graphLineColor = 'black'; o.graphLineStyle = 'solid'; o.graphLineWidth = 0.5; +o.graphShowInLegend = true; + o.graphMarker = ''; o.graphMarkerEdgeColor = ''; o.graphMarkerFaceColor = ''; diff --git a/matlab/reports/@report_series/writeSeriesForGraph.m b/matlab/reports/@report_series/writeSeriesForGraph.m index 315d5c840..0d3123f74 100644 --- a/matlab/reports/@report_series/writeSeriesForGraph.m +++ b/matlab/reports/@report_series/writeSeriesForGraph.m @@ -37,6 +37,7 @@ end assert(ischar(o.graphMiscTikzAddPlotOptions), ['@report_series.writeSeriesForGraph: ' ... 'graphMiscTikzAddPlotOptions file must be a string']); +assert(islogical(o.graphShowInLegend), '@graph.graph: graphShowInLegend must be either true or false'); % Line valid_graphLineColor = {'red', 'green', 'blue', 'cyan ', 'magenta', 'yellow', ...