234 Formatter formatter =
new Formatter(Locale.US);
235 double maxAxis = Math.max(axis.getRange().getUpperBound(), twinAxisPosition);
236 double minAxis = Math.min(axis.getRange().getLowerBound(), twinAxisPosition);
238 String precisionAffichageLabel;
239 double pas = axis.getTickUnit().getSize();
240 pas = fixStep(minAxis, maxAxis, pas);
243 if (Math.log10(pas) < 0)
244 puissDix = (int) Math.log10(pas) - 1;
246 puissDix = (int) Math.log10(pas);
249 String arrowLeftType =
"latex";
250 String arrowRightType =
"latex";
251 String arrowLeftMargin =
"3mm";
252 String arrowRightMargin =
"3mm";
253 if (twinAxisPosition == minAxis) {
255 arrowLeftMargin =
"0mm";
256 }
else if (twinAxisPosition == maxAxis) {
258 arrowRightMargin =
"0mm";
262 String label = axis.getLabel();
266 if (puissDix < -2 || puissDix > 2)
267 label = label +
" $(10^{" + puissDix +
"})$";
274 formatter.format(
"\\draw [%s-%s] ([xshift=-%s] %s,0) -- ([xshift=%s] %s,0) node[right] {%s};%n", arrowLeftType,
275 arrowRightType, arrowLeftMargin, (minAxis - twinAxisPosition) * scale, arrowRightMargin,
276 (maxAxis - twinAxisPosition) * scale, label);
282 for (
int i = 0; i < labelsValue.length; i++) {
283 value = labelsValue[i];
284 if (labelsName ==
null) {
285 labelTemp = (value * 100.0 / Math.pow(10, puissDix));
287 name = Integer.toString((
int) (labelTemp / 100.0));
291 name = labelsName[i];
292 if (value == twinAxisPosition && tick0Flag)
293 formatter.format(
"\\draw (%s,00) -- +(0mm,1mm) -- +(0mm,-1mm) node[below right] {%s};%n",
294 (value - twinAxisPosition) * scale, name);
296 formatter.format(
"\\draw (%s,0) -- +(0mm,1mm) -- +(0mm,-1mm) node[below] {%s};%n",
297 (value - twinAxisPosition) * scale, name);
301 double k = twinAxisPosition;
302 labelTemp = (Math.round(k * 100 / Math.pow(10, puissDix))) / 100.0;
303 if (labelTemp == (
int) (labelTemp))
304 precisionAffichageLabel =
"0";
305 else if (labelTemp * 10 == (
int) (labelTemp * 10))
306 precisionAffichageLabel =
"1";
308 precisionAffichageLabel =
"2";
310 formatter.format(
"\\draw (%s,0) -- +(0mm,1mm) -- +(0mm,-1mm) node[below right] {%."
311 + precisionAffichageLabel +
"f};%n", (k - twinAxisPosition) * scale, labelTemp);
314 "\\draw (%s,0) -- +(0mm,1mm) -- +(0mm,-1mm) node[below] {%." + precisionAffichageLabel +
"f};%n",
315 (k - twinAxisPosition) * scale, labelTemp);
317 while (k <= maxAxis) {
318 labelTemp = (Math.round(k * 100 / Math.pow(10, puissDix))) / 100.0;
319 if (labelTemp == (
int) (labelTemp))
320 precisionAffichageLabel =
"0";
321 else if (labelTemp * 10 == (
int) (labelTemp * 10))
322 precisionAffichageLabel =
"1";
324 precisionAffichageLabel =
"2";
326 "\\draw (%s,0) -- +(0mm,1mm) -- +(0mm,-1mm) node[below] {%." + precisionAffichageLabel +
"f};%n",
327 (k - twinAxisPosition) * scale, labelTemp);
331 k = twinAxisPosition - pas;
332 while (k >= minAxis) {
333 labelTemp = (Math.round(k * 100 / Math.pow(10, puissDix))) / 100.0;
334 if (labelTemp == (
int) (labelTemp))
335 precisionAffichageLabel =
"0";
336 else if (labelTemp * 10 == (
int) (labelTemp * 10))
337 precisionAffichageLabel =
"1";
339 precisionAffichageLabel =
"2";
341 "\\draw (%s,0) -- +(0mm,1mm) -- +(0mm,-1mm) node[below] {%." + precisionAffichageLabel +
"f};%n",
342 (k - twinAxisPosition) * scale, labelTemp);
350 formatter.format(
"\\draw [%s-%s] ([yshift=-%s] 0,%s) -- ([yshift=%s] 0, %s) node[above] {%s};%n",
351 arrowLeftType, arrowRightType, arrowLeftMargin, (minAxis - twinAxisPosition) * scale, arrowRightMargin,
352 (maxAxis - twinAxisPosition) * scale, label);
359 for (
int i = 0; i < labelsValue.length; i++) {
360 value = labelsValue[i];
361 if (labelsName ==
null) {
362 labelTemp = (value * scale * 100 / Math.pow(10, puissDix));
363 if (labelTemp == (
int) (labelTemp))
364 name = Integer.toString((
int) (labelTemp / 100.0));
366 name = Double.toString(Math.round(labelTemp) / 100.0);
368 name = labelsName[i];
369 if (value == twinAxisPosition && tick0Flag)
370 formatter.format(
"\\draw (%s,%s) -- +(1mm,0mm) -- +(-1mm,0mm) node[above left] {%s};%n", 0,
371 (value - twinAxisPosition) * scale, name);
373 formatter.format(
"\\draw (%s,%s) -- +(1mm,0mm) -- +(-1mm,0mm) node[left] {%s};%n", 0,
374 (value - twinAxisPosition) * scale, name);
378 double k = twinAxisPosition;
380 labelTemp = (Math.round(k * 100 / Math.pow(10, puissDix))) / 100.0;
381 if (labelTemp == (
int) (labelTemp))
382 precisionAffichageLabel =
"0";
383 else if (labelTemp * 10 == (
int) (labelTemp * 10))
384 precisionAffichageLabel =
"1";
386 precisionAffichageLabel =
"2";
388 formatter.format(
"\\draw (0,%s) -- +(1mm,0mm) -- +(-1mm,0mm) node[above left] {%."
389 + precisionAffichageLabel +
"f};%n", (k - twinAxisPosition) * scale, labelTemp);
392 "\\draw (0,%s) -- +(1mm,0mm) -- +(-1mm,0mm) node[left] {%." + precisionAffichageLabel +
"f};%n",
393 (k - twinAxisPosition) * scale, labelTemp);
395 while (k <= maxAxis) {
396 labelTemp = (Math.round(k * 100 / Math.pow(10, puissDix))) / 100.0;
397 if (labelTemp == (
int) (labelTemp))
398 precisionAffichageLabel =
"0";
399 else if (labelTemp * 10 == (
int) (labelTemp * 10))
400 precisionAffichageLabel =
"1";
402 precisionAffichageLabel =
"2";
404 "\\draw (0,%s) -- +(1mm,0mm) -- +(-1mm,0mm) node[left] {%." + precisionAffichageLabel +
"f};%n",
405 (k - twinAxisPosition) * scale, labelTemp);
408 k = twinAxisPosition - pas;
409 while (k >= minAxis) {
410 labelTemp = (Math.round(k * 100 / Math.pow(10, puissDix))) / 100.0;
411 if (labelTemp == (
int) (labelTemp))
412 precisionAffichageLabel =
"0";
413 else if (labelTemp * 10 == (
int) (labelTemp * 10))
414 precisionAffichageLabel =
"1";
416 precisionAffichageLabel =
"2";
418 "\\draw (0,%s) -- +(1mm,0mm) -- +(-1mm,0mm) node[left] {%." + precisionAffichageLabel +
"f};%n",
419 (k - twinAxisPosition) * scale, labelTemp);
424 return formatter.toString();