Единицы JFreeChart и Y-оси - PullRequest
3 голосов
/ 21 октября 2011

У меня есть StackedXYAreaChart, который выглядит следующим образом:

enter image description here

Как мне отформатировать единицы измерения по оси Y, чтобы они равномерно располагались и отображались через определенные интервалы?Например, вместо отображения единиц с шагом 1 (например, 0, 1, 2, 3, ... 100), я хочу отображать единицы с шагом 10 или 25 (например, 0, 25, 50, 75, 100).Спасибо!

Ответы [ 3 ]

4 голосов
/ 28 октября 2011

Я нашел решение своего вопроса. Я использую CustomTickUnit, который форматирует числа и добавляет единицы к суффиксу, например 1000000 становится 1 GB.

Я установил тиковые единицы следующим кодом, который распределял их равномерно и соответствующим образом форматировал, чтобы они были очень удобочитаемыми:

public void setupRangeAxis(NumberAxis rangeAxis) {
  final TickUnits standardUnits = new TickUnits();
  standardUnits.add(new CustomTickUnit(1));
  standardUnits.add(new CustomTickUnit(10));
  standardUnits.add(new CustomTickUnit(100));
  standardUnits.add(new CustomTickUnit(1000)); // Kilo
  standardUnits.add(new CustomTickUnit(10000));
  standardUnits.add(new CustomTickUnit(100000));
  standardUnits.add(new CustomTickUnit(1000000)); // Mega
  standardUnits.add(new CustomTickUnit(10000000));
  standardUnits.add(new CustomTickUnit(100000000));
  standardUnits.add(new CustomTickUnit(1000000000)); // Giga
  standardUnits.add(new CustomTickUnit(10000000000L));
  standardUnits.add(new CustomTickUnit(100000000000L));
  standardUnits.add(new CustomTickUnit(1000000000000L)); // Tera
  standardUnits.add(new CustomTickUnit(10000000000000L));
  standardUnits.add(new CustomTickUnit(100000000000000L));
  standardUnits.add(new CustomTickUnit(1000000000000000L)); // Peta
  standardUnits.add(new CustomTickUnit(10000000000000000L));
  standardUnits.add(new CustomTickUnit(100000000000000000L));
  standardUnits.add(new CustomTickUnit(1000000000000000000L)); // Exa
  rangeAxis.setStandardTickUnits(standardUnits);
}
1 голос
/ 25 июня 2015
CategoryPlot plot = chart.getCategoryPlot();

NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();

rangeAxis.setTickUnit(new NumberTickUnit(300));
1 голос
/ 21 октября 2011

Предполагая NumberAxis, установите единицу тика на 25. Здесь есть соответствующий пример здесь .

axis.setTickUnit(new NumberTickUnit(25));
...