我用JFreeChart画柱状图时y轴小数点位数只显示了两位,数字显示在柱子上时只显示了3位,我想让它至少显示4位小数该怎么办?还有就是画出来的柱子太细了,请问柱子宽度如何控制?

解决方案 »

  1.   


    //设置柱子之间的间距
    renderer.setItemMargin(0.1);
      

  2.   

    NumberTickUnit nt=new NumberTickUnit(1.22);
      

  3.   

    我比较菜,能不能写具体点,下面是我的代码,具体应该怎么加呀?
    package test;import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.labels.ItemLabelAnchor;
    import org.jfree.chart.labels.ItemLabelPosition;
    import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.category.BarRenderer;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.ui.TextAnchor;
    import test.MyWebChart.LabelGenerator;public class Chart {
    private DefaultCategoryDataset defaultcategorydataset;

    public void setBarValue(double n,String s1,String s2) {
    defaultcategorydataset.addValue(n,s1,s2);
    }

    public Chart() {
    defaultcategorydataset=new DefaultCategoryDataset();
    }

        
        //3D水平柱图,图表标题,图片路径,图片名称,横坐标说明,纵坐标说明,是否有图例,宽,高,水平还是垂直显示
    public void create3DBarChart(String title,String path,String name,String xdescribe,String ydescribe,boolean blegend,int width,int height,String direction){
        //设置图片默认路径和默认名字
    if (path == null || "".equals(path)) {
    path = "d:\\";
    }
    if (name == null || "".equals(name)) {
    name = "temp.jpg";
    }
    //设置图片默认宽度和高度
    if (width == 0 ) {
    width = 400;
    }
    if (height == 0 ) {
    height = 300;
    }

    //图表标题,横坐标说明,纵坐标说明,数据,水平还是垂直显示,图例,tooltips,urls
    JFreeChart jfreechart = null;
    //水平还是垂直显示
    if(direction!=null&&direction.equals("H")){
    jfreechart = ChartFactory.createBarChart3D(title, xdescribe, ydescribe, defaultcategorydataset, PlotOrientation.HORIZONTAL, blegend, true, false);
    }else{
    jfreechart = ChartFactory.createBarChart3D(title, xdescribe, ydescribe, defaultcategorydataset, PlotOrientation.VERTICAL, blegend, true, false);
    }

            
    CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();
            BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer();
            barrenderer.setItemLabelGenerator(new LabelGenerator());
            barrenderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
            barrenderer.setItemLabelsVisible(true);
            ItemLabelPosition itemlabelposition = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.TOP_CENTER, TextAnchor.TOP_CENTER, 0D);
            barrenderer.setPositiveItemLabelPositionFallback(itemlabelposition);
    //生成图片
    FileOutputStream fos = null;
    try {
    fos = new FileOutputStream(path + name);
    ChartUtilities.writeChartAsJPEG(fos,jfreechart,width,height);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }finally{
    try {
    fos.close();
    } catch (IOException e1) {
    e1.printStackTrace();
    }
    }
    }

    public static void main(String[] args) {
    Chart chart=new Chart(); chart.setBarValue(0.77552D, "name", "Robert");
            chart.setBarValue(0.9312D, "name", "Mary");
            chart.setBarValue(0.32D, "name", "John");
            chart.setBarValue(0.75D, "name", "Ellen");
            chart.setBarValue(0.63D, "name", "Jack");
            chart.setBarValue(0.9421D, "name", "David");
            chart.setBarValue(0.167D, "name", "Mark");
            chart.setBarValue(0.6578D, "name", "Andy");
            chart.create3DBarChart("first 3Dbar","d://","3Dbar.jpg",null,null,false,800,600,"V");
    }
    }
      

  4.   

    NumberAxis  vn=(NumberAxis )categoryplot .getRangeAxis();
    vn.setAutoTickUnitSelection(false);
    NumberTickUnit nt=new NumberTickUnit(1.22);vn.ssetTickUnit(nt);
    barrenderer.setItemMargin(0.1);
      

  5.   

    还是不行呀,我用的是jfreechart-1.0.1,是不是版本的问题?