2010-08-04 58 views
0

我正在尝试生成一个条形图,但它迫使我通过计算来自域轴的标签的大小来控制宽度和高度,并在它们太大时导致出现问题(列值的起点位于图表中间)。如何使用默认组件的大小在JFreeChart中生成条形图?

你有什么建议吗?

谢谢。

+0

我很难想象这个问题。你可以发布图片和一些代码吗? 'BarChartDemo1'可能是一个方便的起点:http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/demo/BarChartDemo1.html – trashgod 2010-08-05 03:00:29

回答

1

您可以通过创建重绘图形的自定义画家来更改图表上的渲染器;在这里,Painter代码似乎不能正确显示。我用一个widthMultiplier来控制我的酒吧的大小:

GradientXYBarPainter xyBarpainter = new GradientXYBarPainter() { 

    @Override 
    public void paintBar(Graphics2D g2, XYBarRenderer renderer, int row, 
      int column, RectangularShape bar, RectangleEdge base) { 
     Rectangle2D rect = bar.getFrame(); 
     rect.setRect(rect.getX(), rect.getY(), 
      rect.getWidth() * widthMultiplier, rect.getHeight()); 
     bar.setFrame(rect); 
     super.paintBar(g2, renderer, row, column, bar, base); 
    } 
}; 
StackedXYBarRenderer rend = new StackedXYBarRenderer(); 
rend.setBarPainter(xyBarpainter);