【发布时间】:2013-04-12 01:19:18
【问题描述】:
我有一个漂亮的、漂亮的 JFreeChart 生成的折线图,但有一个例外 - 我的 X 轴上的最后一个值被截断,如下所示:
| | |_________|________|__________|_________|_________| 100 赫兹 1 赫兹 10 赫兹 100 赫兹 1 兆赫 10 兆赫(注意以 MHz 为单位的 z 被截断)。
我在这里研究了解决方案:
JFreeChart tick label cut off
但因为我在 LogAxis 中手动指定范围,所以从 JavaDoc 中显示设置边距无效。
JavaDoc
这是我用来生成 X 轴的代码:
最终 LogAxis domainAxis = new LogAxis(frequencyAxisLabel); domainAxis.setStandardTickUnits(LogAxis.createLogTickUnits(Locale.ENGLISH)); domainAxis.setRange(100, 10000000); //100Hz 到 10MHz domainAxis.setUpperMargin(.05); //没有效果 domainAxis.setNumberFormatOverride(new UnitNumberFormat(UnitValue.HERTZ)); plot.setDomainAxis(domainAxis);如果有帮助,我还将使用以下内容将其写入 .svg 文件:
// 获取一个 DOMImplementation 并创建一个 XML 文档 DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation(); 文档 document = domImpl.createDocument(null, "svg", null); // 创建 SVG 生成器的实例 SVGGraphics2D svgGenerator = new SVGGraphics2D(document); svgGenerator.setSVGCanvasSize(新维度(720, 470)); // 在 SVG 生成器中绘制图表 矩形边界 = new Rectangle(10, 10, 700, 450); chart.draw(svgGenerator, bounds); //写入svg文件 OutputStream outputStream = new FileOutputStream(new File("SomePath)); Writer out = new OutputStreamWriter(outputStream, "UTF-8"); svgGenerator.stream(out, true /* 使用 css */); outputStream.flush(); outputStream.close();鉴于 setUpperMargin() 方法不会产生影响,我将如何确保标签有足够的空间来完全打印?我也愿意旋转刻度标签,虽然我还没有弄清楚如何做,只知道如何旋转轴标签。
【问题讨论】:
标签: jfreechart truncation axis-labels