comparison scripts/plot/util/private/__go_draw_axes__.m @ 18826:9c2ff2361864 stable

fix xticklabel with minor grid (bug #38139, bug #40256) * scripts/plot/util/private/__go_draw_axes__.m (do_tics_1): Set manual ticks first and add manual labels later. Use variable mirror as string to avoid code duplication. Set mtics at the end to avoid code duplication.
author Stefan Mahr <dac922@gmx.de>
date Wed, 09 Apr 2014 10:23:11 +0200
parents e5ab507687ee
children 6a8cd989c69a
comparison
equal deleted inserted replaced
18820:85b4ba1fe6de 18826:9c2ff2361864
2113 2113
2114 function do_tics_1 (ticmode, tics, mtics, labelmode, labels, color, ax, 2114 function do_tics_1 (ticmode, tics, mtics, labelmode, labels, color, ax,
2115 plot_stream, mirror, mono, axispos, tickdir, ticklength, 2115 plot_stream, mirror, mono, axispos, tickdir, ticklength,
2116 fontname, fontspec, interpreter, scale, sgn, gnuplot_term) 2116 fontname, fontspec, interpreter, scale, sgn, gnuplot_term)
2117 persistent warned_latex = false; 2117 persistent warned_latex = false;
2118 if (mirror)
2119 mirror = "mirror";
2120 else
2121 mirror = "nomirror";
2122 endif
2118 if (strcmpi (interpreter, "tex")) 2123 if (strcmpi (interpreter, "tex"))
2119 for n = 1 : numel (labels) 2124 for n = 1 : numel (labels)
2120 labels{n} = __tex2enhanced__ (labels{n}, fontname, false, false); 2125 labels{n} = __tex2enhanced__ (labels{n}, fontname, false, false);
2121 endfor 2126 endfor
2122 elseif (strcmpi (interpreter, "latex")) 2127 elseif (strcmpi (interpreter, "latex"))
2141 endif 2146 endif
2142 colorspec = get_text_colorspec (color, mono); 2147 colorspec = get_text_colorspec (color, mono);
2143 if (strcmpi (ticmode, "manual") || strcmpi (labelmode, "manual")) 2148 if (strcmpi (ticmode, "manual") || strcmpi (labelmode, "manual"))
2144 if (isempty (tics)) 2149 if (isempty (tics))
2145 fprintf (plot_stream, "unset %stics;\nunset m%stics;\n", ax, ax); 2150 fprintf (plot_stream, "unset %stics;\nunset m%stics;\n", ax, ax);
2146 elseif (strcmpi (labelmode, "manual")) 2151 return
2152 endif
2153 if (strcmpi (ticmode, "manual"))
2154 fprintf (plot_stream, "set format %s \"%s\";\n", ax, fmt);
2155 fprintf (plot_stream, "set %stics %s %s %s %s (", ax, tickdir,
2156 ticklength, axispos, mirror);
2157 fprintf (plot_stream, " %.15g,", tics(1:end-1));
2158 fprintf (plot_stream, " %.15g) %s;\n", tics(end), fontspec);
2159 endif
2160 if (strcmpi (labelmode, "manual"))
2147 if (ischar (labels)) 2161 if (ischar (labels))
2148 labels = cellstr (labels); 2162 labels = cellstr (labels);
2149 endif 2163 endif
2150 if (isnumeric (labels)) 2164 if (isnumeric (labels))
2151 labels = num2str (real (labels(:))); 2165 labels = num2str (real (labels(:)));
2155 endif 2169 endif
2156 if (iscellstr (labels)) 2170 if (iscellstr (labels))
2157 k = 1; 2171 k = 1;
2158 ntics = numel (tics); 2172 ntics = numel (tics);
2159 nlabels = numel (labels); 2173 nlabels = numel (labels);
2160 fprintf (plot_stream, "set format %s \"%%g\";\n", ax); 2174 fprintf (plot_stream, "set %stics add %s %s %s %s (", ax,
2161 if (mirror) 2175 tickdir, ticklength, axispos, mirror);
2162 fprintf (plot_stream, "set %stics %s %s %s mirror (", ax,
2163 tickdir, ticklength, axispos);
2164 else
2165 fprintf (plot_stream, "set %stics %s %s %s nomirror (", ax,
2166 tickdir, ticklength, axispos);
2167 endif
2168
2169 labels = strrep (labels, "%", "%%"); 2176 labels = strrep (labels, "%", "%%");
2170 for i = 1:ntics 2177 for i = 1:ntics
2171 fprintf (plot_stream, " \"%s\" %.15g", labels{k++}, tics(i)); 2178 fprintf (plot_stream, " \"%s\" %.15g", labels{k++}, tics(i));
2172 if (i < ntics) 2179 if (i < ntics)
2173 fputs (plot_stream, ", "); 2180 fputs (plot_stream, ", ");
2175 if (k > nlabels) 2182 if (k > nlabels)
2176 k = 1; 2183 k = 1;
2177 endif 2184 endif
2178 endfor 2185 endfor
2179 fprintf (plot_stream, ") %s %s;\n", colorspec, fontspec); 2186 fprintf (plot_stream, ") %s %s;\n", colorspec, fontspec);
2180 if (strcmp (mtics, "on"))
2181 fprintf (plot_stream, "set m%stics %d;\n", ax, num_mtics);
2182 else
2183 fprintf (plot_stream, "unset m%stics;\n", ax);
2184 endif
2185 else 2187 else
2186 error ("__go_draw_axes__: unsupported type of ticklabel"); 2188 error ("__go_draw_axes__: unsupported type of ticklabel");
2187 endif 2189 endif
2188 else
2189 fprintf (plot_stream, "set format %s \"%s\";\n", ax, fmt);
2190 if (mirror)
2191 fprintf (plot_stream, "set %stics %s %s %s mirror (", ax, tickdir,
2192 ticklength, axispos);
2193 else
2194 fprintf (plot_stream, "set %stics %s %s %s nomirror (", ax, tickdir,
2195 ticklength, axispos);
2196 endif
2197 fprintf (plot_stream, " %.15g,", tics(1:end-1));
2198 fprintf (plot_stream, " %.15g) %s;\n", tics(end), fontspec);
2199 if (strcmp (mtics, "on"))
2200 fprintf (plot_stream, "set m%stics %d;\n", ax, num_mtics);
2201 else
2202 fprintf (plot_stream, "unset m%stics;\n", ax);
2203 endif
2204 endif 2190 endif
2205 else 2191 else
2206 fprintf (plot_stream, "set format %s \"%s\";\n", ax, fmt); 2192 fprintf (plot_stream, "set format %s \"%s\";\n", ax, fmt);
2207 if (mirror) 2193 fprintf (plot_stream, "set %stics %s %s %s %s %s %s;\n", ax,
2208 fprintf (plot_stream, "set %stics %s %s %s mirror %s %s;\n", ax, 2194 tickdir, ticklength, axispos, mirror, colorspec, fontspec);
2209 axispos, tickdir, ticklength, colorspec, fontspec); 2195 endif
2210 else 2196 if (strcmp (mtics, "on"))
2211 fprintf (plot_stream, "set %stics %s %s %s nomirror %s %s;\n", ax, 2197 fprintf (plot_stream, "set m%stics %d;\n", ax, num_mtics);
2212 tickdir, ticklength, axispos, colorspec, fontspec); 2198 else
2213 endif 2199 fprintf (plot_stream, "unset m%stics;\n", ax);
2214 if (strcmp (mtics, "on"))
2215 fprintf (plot_stream, "set m%stics %d;\n", ax, num_mtics);
2216 else
2217 fprintf (plot_stream, "unset m%stics;\n", ax);
2218 endif
2219 endif 2200 endif
2220 endfunction 2201 endfunction
2221 2202
2222 function ticklabel = ticklabel_to_cell (ticklabel) 2203 function ticklabel = ticklabel_to_cell (ticklabel)
2223 if (isnumeric (ticklabel)) 2204 if (isnumeric (ticklabel))