我们正在使用JFreeChart构建一个引擎来显示图表。这是一个基于Tomcat + Java 1.5.0的Web服务,可以将图表呈现为PNG和JPEG(使用ChartUtilities.writeChartAs{PNG,JPEG}())。
我们遇到了一个问题,JFreeChart似乎会缩放Plot区域内的所有内容,但只缩小了几个像素。结果导致图形看起来不一致,例如:
- 次要刻度有时会在水平方向上被拉伸,以至于它们看起来比一个像素宽。 - 我们在绘图区域右上角使用一个小图像作为水印。在其中间附近(但不完全相同),该图像在水平和垂直方向上被拉伸了一个像素。 - 背景网格线似乎出现在子像素边界上。我没有找到创建精确虚线网格线的方法。
我们尝试过1.0.9和1.0.13,得到了完全相同的结果(除了旧版本中不可用的次要刻度)。此外,将图像呈现到Frame而不是JPEG / PNG产生了相同的结果。
提前感谢您的帮助 :)
编辑:SSCCE:
使用带有小字体文本或网格的图像。这将显示背景图像的缩放效果。
编辑2: 我们已经采用了子类化或代理渲染器并在它们的drawItem()(或类似方法)中以文本形式绘制标签。这很有效。 然而,次要刻度现在是一个问题——它们似乎也被缩放了。例如:请参见第9和第15个刻度。 看底部http://img14.imageshack.us/img14/3625/76676732.jpg
我们遇到了一个问题,JFreeChart似乎会缩放Plot区域内的所有内容,但只缩小了几个像素。结果导致图形看起来不一致,例如:
- 次要刻度有时会在水平方向上被拉伸,以至于它们看起来比一个像素宽。 - 我们在绘图区域右上角使用一个小图像作为水印。在其中间附近(但不完全相同),该图像在水平和垂直方向上被拉伸了一个像素。 - 背景网格线似乎出现在子像素边界上。我没有找到创建精确虚线网格线的方法。
我们尝试过1.0.9和1.0.13,得到了完全相同的结果(除了旧版本中不可用的次要刻度)。此外,将图像呈现到Frame而不是JPEG / PNG产生了相同的结果。
提前感谢您的帮助 :)
编辑:SSCCE:
@Test
public void testScaling1() throws InterruptedException {
// Load Image:
Component dummy = new Component() {};
MediaTracker tracker = new MediaTracker(dummy);
Image img = Toolkit.getDefaultToolkit().getImage("C:\\My\Image.gif");
tracker.addImage(img, 0);
tracker.waitForAll();
// Build Data set and base chart.
TimeSeriesCollection dataset = new TimeSeriesCollection();
TimeSeries ts = new TimeSeries("Sample");
ts.add(new Second(0, 0, 0, 1, 1, 1900), 1.0);
ts.add(new Second(1, 0, 0, 1, 1, 1900), 3.0);
ts.add(new Second(2, 0, 0, 1, 1, 1900), 4.0);
ts.add(new Second(3, 0, 0, 1, 1, 1900), 2.0);
dataset.addSeries(ts);
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"blabla",
null,
null,
dataset,
true,
true,
false
);
// Add BG image in top-right corner.
XYPlot xy = chart.getXYPlot();
xy.setBackgroundAlpha(0.0F);
xy.setBackgroundImage(img);
xy.setBackgroundImageAlignment(Align.NORTH_WEST);
xy.setBackgroundImageAlpha(1.0F);
paintChart(chart);
}
使用带有小字体文本或网格的图像。这将显示背景图像的缩放效果。
编辑2: 我们已经采用了子类化或代理渲染器并在它们的drawItem()(或类似方法)中以文本形式绘制标签。这很有效。 然而,次要刻度现在是一个问题——它们似乎也被缩放了。例如:请参见第9和第15个刻度。 看底部http://img14.imageshack.us/img14/3625/76676732.jpg