大家有用过jFreeChart的吗,他用来生成图表确实非常方便。比如统计某某厂家生产了多少产品,那么生成的图形中每根立柱代表一个厂家,立柱的高度代表该厂家的产品数量;如果要统计某某厂家下各销售员销售了多少产品,那么可能每个销售员一根立柱,然后每个厂家有一组这样的立柱,这样虽然也可行,但是如果销售员很多,那么图片占的位置就会很大,而且很乱,不符合要求;但是我现在想让每根立柱代表一个厂家,然后在立柱高度上做文章,每一段立柱高度用不同的颜色表示每个销售员销售的产品数量,这样的需求jFreeChart可以满足吗?(这里MS不能上传本地图片的,如果能够上传就可以更容易表达了)

解决方案 »

  1.   

    可以,看一下jfreechart中的demo
    或者网上找一下到处都是
      

  2.   

    public class Test extends ApplicationFrame{
    public Test(String paramString)
      {
        super(paramString);
        JPanel localJPanel = createDemoPanel();
        localJPanel.setPreferredSize(new Dimension(500, 270));
        setContentPane(localJPanel);
      }  public static CategoryDataset createDataset()
      {
        DefaultCategoryDataset localDefaultCategoryDataset = new DefaultCategoryDataset();
        localDefaultCategoryDataset.addValue(10.0D, "Series 1", "C1");
        localDefaultCategoryDataset.addValue(5.0D, "Series 1", "C2");
        localDefaultCategoryDataset.addValue(6.0D, "Series 1", "C3");
        localDefaultCategoryDataset.addValue(7.0D, "Series 1", "C4");
        localDefaultCategoryDataset.addValue(8.0D, "Series 1", "C5");
        localDefaultCategoryDataset.addValue(9.0D, "Series 1", "C6");
        localDefaultCategoryDataset.addValue(10.0D, "Series 1", "C7");
        localDefaultCategoryDataset.addValue(11.0D, "Series 1", "C8");
        localDefaultCategoryDataset.addValue(3.0D, "Series 1", "C9");
        localDefaultCategoryDataset.addValue(4.0D, "Series 2", "C1");
        localDefaultCategoryDataset.addValue(7.0D, "Series 2", "C2");
        localDefaultCategoryDataset.addValue(17.0D, "Series 2", "C3");
        localDefaultCategoryDataset.addValue(-15.0D, "Series 2", "C4");
        localDefaultCategoryDataset.addValue(6.0D, "Series 2", "C5");
        localDefaultCategoryDataset.addValue(8.0D, "Series 2", "C6");
        localDefaultCategoryDataset.addValue(9.0D, "Series 2", "C7");
        localDefaultCategoryDataset.addValue(13.0D, "Series 2", "C8");
        localDefaultCategoryDataset.addValue(7.0D, "Series 2", "C9");
        localDefaultCategoryDataset.addValue(15.0D, "Series 3", "C1");
        localDefaultCategoryDataset.addValue(-14.0D, "Series 3", "C2");
        localDefaultCategoryDataset.addValue(12.0D, "Series 3", "C3");
        localDefaultCategoryDataset.addValue(11.0D, "Series 3", "C4");
        localDefaultCategoryDataset.addValue(10.0D, "Series 3", "C5");
        localDefaultCategoryDataset.addValue(0D, "Series 3", "C6");
        localDefaultCategoryDataset.addValue(7.0D, "Series 3", "C7");
        localDefaultCategoryDataset.addValue(9.0D, "Series 3", "C8");
        localDefaultCategoryDataset.addValue(11.0D, "Series 3", "C9");
        localDefaultCategoryDataset.addValue(14.0D, "Series 4", "C1");
        localDefaultCategoryDataset.addValue(3.0D, "Series 4", "C2");
        localDefaultCategoryDataset.addValue(7.0D, "Series 4", "C3");
        localDefaultCategoryDataset.addValue(0D, "Series 4", "C4");
        localDefaultCategoryDataset.addValue(9.0D, "Series 4", "C5");
        localDefaultCategoryDataset.addValue(6.0D, "Series 4", "C6");
        localDefaultCategoryDataset.addValue(7.0D, "Series 4", "C7");
        localDefaultCategoryDataset.addValue(9.0D, "Series 4", "C8");
        localDefaultCategoryDataset.addValue(10.0D, "Series 4", "C9");
        return localDefaultCategoryDataset;
      }  private static JFreeChart createChart(CategoryDataset paramCategoryDataset)
      {
        JFreeChart localJFreeChart = ChartFactory.createStackedBarChart3D("Stacked Bar Chart 3D Demo 3", "Category", "Value", paramCategoryDataset, PlotOrientation.HORIZONTAL, true, true, false);
        CategoryPlot localCategoryPlot = (CategoryPlot)localJFreeChart.getPlot();
        BarRenderer localBarRenderer = (BarRenderer)localCategoryPlot.getRenderer();
        localBarRenderer.setDrawBarOutline(false);
        localBarRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        localBarRenderer.setBaseItemLabelsVisible(true);
        localBarRenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
        localBarRenderer.setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
        return localJFreeChart;
      }  public static JPanel createDemoPanel()
      {
        JFreeChart localJFreeChart = createChart(createDataset());
        return new ChartPanel(localJFreeChart);
      }  public static void main(String[] paramArrayOfString)
      {
        StackedBarChart3DDemo3 localStackedBarChart3DDemo3 = new StackedBarChart3DDemo3("Stacked Bar Chart 3D Demo 3");
        localStackedBarChart3DDemo3.pack();
        RefineryUtilities.centerFrameOnScreen(localStackedBarChart3DDemo3);
        localStackedBarChart3DDemo3.setVisible(true);
      }
    }看看这个合适吗
      

  3.   

    上述图表是由一个.NET开源框架实现的,就完全满足我的需求,大家都没有解决的办法嘛?