У меня есть хороший, довольно JFreeChart сгенерированных линия диаграммы, с одним исключением - последнее значение на моей оси X становится усечен, так как:JFreeChart метка последней оси Х отрезали
| | |_________|________|__________|_________|_________| 100 Hz 1 kHz 10 kHz 100 kHz 1 MHz 10 MH
(Обратите внимание, что z в МГц отключена).
Я посмотрел в решение здесь:
JFreeChart tick label cut off
, но потому, что я вручную задать диапазон в LogAxis
он появляется из JavaDoc, что установка запаса не имеет никакого эффекта.
JavaDoc
Это код, я использую для создания моих X-ось:
final LogAxis domainAxis = new LogAxis(frequencyAxisLabel); domainAxis.setStandardTickUnits(LogAxis.createLogTickUnits(Locale.ENGLISH)); domainAxis.setRange(100, 10000000); //100Hz to 10MHz domainAxis.setUpperMargin(.05); //Has no effect domainAxis.setNumberFormatOverride(new UnitNumberFormat(UnitValue.HERTZ)); plot.setDomainAxis(domainAxis);
Если это поможет, я также пишу это к .svg файл, используя следующие:
// Get a DOMImplementation and create an XML document DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation(); Document document = domImpl.createDocument(null, "svg", null); // Create an instance of the SVG Generator SVGGraphics2D svgGenerator = new SVGGraphics2D(document); svgGenerator.setSVGCanvasSize(new Dimension(720, 470)); // draw the chart in the SVG generator Rectangle bounds = new Rectangle(10, 10, 700, 450); chart.draw(svgGenerator, bounds); // Write svg file OutputStream outputStream = new FileOutputStream(new File("SomePath)); Writer out = new OutputStreamWriter(outputStream, "UTF-8"); svgGenerator.stream(out, true /* use css */); outputStream.flush(); outputStream.close();
Учитывая, что метод setUpperMargin() не будет иметь эффекта, как бы я хотел убедиться, что у метки достаточно места для полной печати? Я открыт для поворота ярлыков меток, хотя я и не понял, как это сделать, только как повернуть метку оси.