[英]How to disable scaling in JFreeChart?
我們正在使用JFreeChart構建一個引擎來顯示圖形。 這是一個在Tomcat + Java 1.5.0上運行的Web服務,並將圖表呈現為PNG和JPEG(使用ChartUtilities.writeChartAs {PNG,JPEG}())。
我們遇到了一個問題,JFreeChart似乎可以擴展Plot區域內的所有內容,但只有幾個像素。 結果是圖形看起來不一致,例如:
我們已經嘗試了1.0.9和1.0.13,結果完全相同(除了小版本,舊版本中沒有)。 此外,將圖像渲染為幀而不是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個刻度。
我無法使用版本1.0.13,Java 1.5,Mac OS X的saveChartAsJPEG()
或writeChartAsPNG()
重現您描述的效果,代碼如下:
try {
ChartUtilities.writeChartAsPNG(new FileOutputStream(
new File("test.png")), chart, 600, 400);
} catch (IOException ex) {
ex.printStackTrace();
}
屏幕是否顯示相同的工件? 更改WIDTH
和HEIGHT
參數或省略水印時會發生什么? 您是否使用具有不尋常指標的特殊字體? 你嘗試過不同的平台嗎?
您可以按如下方式運行TimeSeriesChartDemo1
:
java -cp jfreechart-1.0.13.jar:jcommon-1.0.16.jar org.jfree.chart.demo.TimeSeriesChartDemo1
Mac OS 10.5.8,Java 1.5.0_24,JFreeChart 1.0.13, TimeSeriesDemo1 ,使用saveChartAsPNG()
, ImageIO.read()
和setBackgroundImage()
。 setBackgroundImageAlignment(Align.NORTH_WEST)
有點時髦。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.