Ось форматирования с десятичными числами динамически для 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);