收录日期:2020/09/26 01:31:50 时间:2016/07/15 11:38:30 标签:Java SE
我希望
如果数据全0那0坐标还能在xy轴交界处,而不是水平显示全0数据,还是在最下面显示!不知道应该怎么修改啊


/* ------------------
 * BarChartDemo4.java
 * ------------------
 * (C) Copyright 2003-2005, by Object Refinery Limited.
 *
 */



import java.awt.Color;
import java.awt.GradientPaint;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

/**
 * A bar chart with only two bars - here the 'maxBarWidth' attribute in the 
 * renderer prevents the bars from getting too wide.
 */
public class BarChartDemo4 extends ApplicationFrame {

    /**
     * Creates a new demo instance.
     *
     * @param title  the frame title.
     */
    public BarChartDemo4(String title) {

        super(title);

        CategoryDataset dataset = createDataset();
        JFreeChart chart = createChart(dataset);
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);

    }

    /**
     * Returns a sample dataset.
     * 
     * @return The dataset.
     */
    private static CategoryDataset createDataset() {
        
        // row keys...
        String series1 = "First";
    

        // column keys...
        String category1 = "Category 1";
        String category2 = "Category 2";
        // create the dataset...
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(0, series1, category1);
        dataset.addValue(0, series1, category2);
        
        return dataset;
        
    }
    
    /**
     * Creates a sample chart.
     * 
     * @param dataset  the dataset.
     * 
     * @return The chart.
     */
    private static JFreeChart createChart(CategoryDataset dataset) {
        
        // create the chart...
        JFreeChart chart = ChartFactory.createBarChart3D(
            "Bar Chart Demo",         // chart title
            "Category",               // domain axis label
            "Value",                  // range axis label
            dataset,                  // data
            PlotOrientation.VERTICAL,
            true,                     // include legend
            true,                     // tooltips?
            false                     // URLs?
        );

        // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...

        // set the background color for the chart...
        chart.setBackgroundPaint(new Color(0xBBBBDD));

        // get a reference to the plot for further customisation...
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        
        // set the range axis to display integers only...
        NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

        // disable bar outlines...
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setDrawBarOutline(false);
        renderer.setMaximumBarWidth(0.10);
        
        // set up gradient paints for series...
        GradientPaint gp0 = new GradientPaint(
            0.0f, 0.0f, Color.blue, 
            0.0f, 0.0f, Color.lightGray
        );
        GradientPaint gp1 = new GradientPaint(
            0.0f, 0.0f, Color.green, 
            0.0f, 0.0f, Color.lightGray
        );
        renderer.setSeriesPaint(0, gp0);
        renderer.setSeriesPaint(1, gp1);
        
        
        
        rangeAxis.setAutoTickUnitSelection(false);   
//        NumberTickUnit   nt=   new   NumberTickUnit(0);   
//        rangeAxis.setTickUnit(nt);   
//        
        
//        rangeAxis.setFixedAutoRange(0);
        
        // OPTIONAL CUSTOMISATION COMPLETED.
        
        return chart;
        
    }
    
    /**
     * Creates a panel for the demo (used by SuperDemo.java).
     * 
     * @return A panel.
     */
    public static JPanel createDemoPanel() {
        JFreeChart chart = createChart(createDataset());
        return new ChartPanel(chart);
    }
    
    /**
     * Starting point for the demonstration application.
     *
     * @param args  ignored.
     */
    public static void main(String[] args) {

        BarChartDemo4 demo = new BarChartDemo4("Bar Chart Demo 4");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }

}

数学上(0,0)是xy交界点。
现在的数据更类似于:(0,0),(1,0),(2,0),(3,0)连起来当然是水平线了。
该回复于2009-08-12 23:20:58被版主删除
rangeAxis.setLowerBound(0.0);
引用 3 楼 zhouzongjiu 的回复:
rangeAxis.setLowerBound(0.0);

确实可以啊,但是能不能在聪明一点啊,就是当所有数据是0的时候自动设置成rangeAxis.setLowerBound(0.0);
并且
rangeAxis.setUpperBound(10.0);
否则虽然是0,0的柱子还是显示的很高!
引用 3 楼 zhouzongjiu 的回复:
rangeAxis.setLowerBound(0.0);

确实可以啊,但是能不能在聪明一点啊,就是当所有数据是0的时候自动设置成rangeAxis.setLowerBound(0.0); 
并且 
rangeAxis.setUpperBound(10.0); 
否则虽然是0,0的柱子还是显示的很高!
引用 3 楼 zhouzongjiu 的回复:
rangeAxis.setLowerBound(0.0);

确实可以啊,但是能不能在聪明一点啊,就是当所有数据是0的时候自动设置成rangeAxis.setLowerBound(0.0); 
并且 
rangeAxis.setUpperBound(10.0); 
否则虽然是0,0的柱子还是显示的很高!
引用 5 楼 girl55 的回复:
引用 3 楼 zhouzongjiu 的回复:
rangeAxis.setLowerBound(0.0);

确实可以啊,但是能不能在聪明一点啊,就是当所有数据是0的时候自动设置成rangeAxis.setLowerBound(0.0);
并且
rangeAxis.setUpperBound(10.0);
否则虽然是0,0的柱子还是显示的很高!

暂时还没发现
是不够灵活,用了就这样的感觉了,
在后台定好刻度,根据参数动态生成chart啊,很好用哦
numberaxis.setRange(0.0, maximum);

maximum就是你后台定的参数。

EXCEL 查询并返回DBF数据 求二进制文件读取及写入的api用法 各位大侠,进来支个招,关于Dwr的问题小女子百思不得其解! 为什么GlobalLock在release下失败 现在流行69帖? C++的文件输入输出流问题 JOptionPane生成的对话框如何屏蔽Esc键事件? openGL中,一个立方体绕 中心x,y,z轴分别旋转一定角度后,各个顶点坐标如何计算 ? Collection max value和输出异常问题 菜鸟问题:页面间值传递的问题 WCF中server & client通信的例子 delphi打包问题 实现:从数据库里读出某一值,然后在前台用列表框将其显示为当前选中的项 我何去何从 QuickReport打印QRRichText出现空页 raul_qu(悲伤的西班牙) / jeesir两位请进~~ 求校验码图片生成。 希望多结识些苏州地区IT朋友 大家中午怎么吃饭? 高手帮帮忙。看看这个功能,关于文件下载。 求助!~~~~ C#窗体的 问题 ~~~~~~ 在线等待~~~~~~ 小鱼60~~其他平分~~ 安装网站后遇到的问题 急,求助各位,数据查询问题 新手问题—关于C语言调用函数报错 基础提问for 语法 JAVA怎样设置JTable的单元格不能被编辑? Request.IsAuthenticated 请推荐几本C#和ASP.NET 2.0的好书吧。 水源 有多少XDJM喜欢上校友录的啊