我有一個漂亮迷人的JFreeChart生成折線圖,但有一個例外 - 在我的X軸的最後一個值是越來越截斷,就像這樣:JFreeChart的最後X軸標籤切斷
| | |_________|________|__________|_________|_________| 100 Hz 1 kHz 10 kHz 100 kHz 1 MHz 10 MH
(注意以MHz爲單位的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()方法不會產生效果,我該如何去確保標籤有足夠的空間來完全打印?我打開旋轉刻度標籤,但我還沒有想出如何做到這一點,只有如何旋轉軸標籤。