Ось форматирования с десятичными числами динамически для JFreeChart

Я пытаюсь отформатировать ось Y создаваемых мной диаграмм (JFreeCharts)

DecimalFormat df = new DecimalFormat("0", DecimalFormatSymbols.getInstance(Locale.ENGLISH));
df.setMaximumFractionDigits(5); 
numberTickUnit = new NumberTickUnit(numberTickUnit.getSize(), df);

Некоторые диаграммы имеют диапазон, скажем, 0-15, поэтому я хочу, чтобы числа имели 2 десятичных знака. Некоторые диаграммы имеют диапазон от 0,001 до 0,002, поэтому я хочу, чтобы числа имели 5 десятичных знаков.

Код выше работает хорошо, с 1 проблемой. Я хочу, чтобы все числа на оси имели одинаковый формат (максимальное количество знаков после запятой). Так что если у меня есть 0.01251, 0.02000, 0.27490Я хочу, чтобы это отображалось так, а не 0.01251, 0.02, 0.2749, Как сделать так, чтобы вся ось имела одинаковый формат, вместо того, чтобы устанавливать его отдельно для каждого числа.

2 ответа

Решение

Я должен был сделать это вручную.

static NavigableMap<Double, String> decimalFormatMap = new TreeMap<Double, String>();
static
{
    decimalFormatMap.put(0.00001, "0.000001");
    decimalFormatMap.put(0.0001, "0.00001");
    decimalFormatMap.put(0.001, "0.0001");
    decimalFormatMap.put(0.01, "0.001");
    decimalFormatMap.put(0.1, "0.01");
    decimalFormatMap.put(1.0, "0.1");
    decimalFormatMap.put(100.0, "1");
}
NumberTickUnit numberTickUnit = * some key number *;
String decimalFormat = decimalFormatMap.get(
    decimalFormatMap.floorKey(numberTickUnit.getSize()));

Я хочу, чтобы числа имели 5 десятичных знаков.

использование setMinimumFractionDigits(), который "Устанавливает минимальное количество цифр, допустимое в дробной части числа."

образ

XYPlot plot =  (XYPlot) chart.getPlot();
NumberAxis range = (NumberAxis) plot.getRangeAxis();
NumberFormat formatter = DecimalFormat.getInstance();
formatter.setMinimumFractionDigits(5);
range.setNumberFormatOverride(formatter);
Другие вопросы по тегам