我用下边的代码可以生成柱状图
但是柱子上却不能显示出数字,我写的有显示数字 ,不管用这是怎吗回事?
还有怎吗设置柱子的粗细?
我用的是 jfreechart-1.0.1.jar<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.util.*,jFree.*" errorPage="" %><%@ page import ="org.jfree.chart.ChartFactory"%>
<%@ page import ="org.jfree.chart.ChartUtilities" %>
<%@ page import ="org.jfree.chart.JFreeChart" %>
<%@ page import ="org.jfree.chart.plot.PlotOrientation" %>
<%@ page import ="org.jfree.data.category.CategoryDataset" %>
<%@ page import ="org.jfree.data.category.DefaultCategoryDataset"%>
<%@ page import ="org.jfree.data.general.DefaultPieDataset"%><%@ page import="java.awt.Color,
                java.awt.Font,
                org.jfree.chart.servlet.ServletUtilities,
                org.jfree.data.general.DatasetUtilities,
                org.jfree.chart.plot.CategoryPlot,
                org.jfree.chart.axis.CategoryAxis,
                org.jfree.chart.axis.ValueAxis,
                org.jfree.chart.renderer.category.BarRenderer3D,
org.jfree.chart.renderer.category.BarRenderer,
                org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
                org.jfree.chart.axis.AxisLocation"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>jfreechar</title>
</head>
<body>
<%  String ww[][]={
{"200","姓名1"},{"190","姓名2"},
{"120","姓名5"},{"110","姓名6"},
{"55","姓名9"},{"52","姓名10"}
};
//-----------------------------------------------------------
 response.setContentType("image/jpeg");
CategoryDataset dataset_u = null; 

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
if(ww.length>0&&ww !=null)
{
for(int j=0;j<ww.length;j++)
           {
               dataset.addValue(Integer.parseInt(ww[j][0]),ww[j][1], ww[j][1]);
             }

}
dataset_u=dataset;
JFreeChart chart = ChartFactory.createBarChart3D("得分对比情况","人员姓名", "分数",dataset_u,PlotOrientation.VERTICAL,true,false,false);

///////////////////// 设置柱状图属性 开始 ////////////////////
CategoryPlot plot = chart.getCategoryPlot(); plot.setForegroundAlpha(0.7f);//透明度
 
    
  BarRenderer3D renderer = new BarRenderer3D(); 
    //显示每个柱的数值,并修改该数值的字体属性   开始
  renderer.setItemLabelGenerator(new   StandardCategoryItemLabelGenerator());   
  renderer.setItemLabelFont(new   Font("Arial",Font.PLAIN,12));   
  renderer.setItemLabelPaint(Color.black);   
  renderer.setItemLabelsVisible(true);   
  //显示每个柱的数值,并修改该数值的字体属性   结束//设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.01);


///////////////////// 设置柱状图属性 结束 ////////////////////

ChartUtilities.writeChartAsJPEG(response.getOutputStream(),100,chart,700,500,null); %>
</body>
</html>

解决方案 »

  1.   

    呵呵 我有的是jchart 
    但是原理都一样
    长度的可以在其中的属性对象中设置
    显示柱体数值可以用热点图去做。
    看API<%@ page contentType="text/html;charset=GBK"%>
    <%@ page import="java.awt.*,
      org.krysalis.jcharts.properties.LegendProperties,
      org.krysalis.jcharts.properties.ChartProperties,
      org.krysalis.jcharts.properties.AxisProperties,
      org.krysalis.jcharts.properties.util.ChartFont,
      org.krysalis.jcharts.properties.LineChartProperties,
      org.krysalis.jcharts.properties.PointChartProperties,
      org.krysalis.jcharts.chartData.DataSeries,
      org.krysalis.jcharts.test.TestDataGenerator,
      org.krysalis.jcharts.chartData.AxisChartDataSet,
      org.krysalis.jcharts.types.ChartType,
      org.krysalis.jcharts.axisChart.AxisChart,
      org.krysalis.jcharts.encoders.ServletEncoderHelper"%><%
    try
    {
    //From AxisChartServlet.java:init()
    LegendProperties legendProperties = new LegendProperties();
    ChartProperties chartProperties = new ChartProperties();
    AxisProperties axisProperties = new AxisProperties( false ); ChartFont axisScaleFont = new ChartFont( new Font( "Georgia Negreta cursiva", Font.PLAIN, 13 ), Color.black );
    axisProperties.getXAxisProperties().setScaleChartFont( axisScaleFont );
    axisProperties.getYAxisProperties().setScaleChartFont( axisScaleFont ); ChartFont axisTitleFont = new ChartFont( new Font( "Arial Narrow", Font.PLAIN, 14 ), Color.black );
    axisProperties.getXAxisProperties().setTitleChartFont( axisTitleFont );
    axisProperties.getYAxisProperties().setTitleChartFont( axisTitleFont ); Stroke[] strokes= { LineChartProperties.DEFAULT_LINE_STROKE, LineChartProperties.DEFAULT_LINE_STROKE, LineChartProperties.DEFAULT_LINE_STROKE };
    Shape[] shapes= { PointChartProperties.SHAPE_TRIANGLE,PointChartProperties.SHAPE_DIAMOND, PointChartProperties.SHAPE_CIRCLE };

    LineChartProperties lineChartProperties = new LineChartProperties(strokes,shapes);

    String[] xAxisLabels= { "1998", "1999", "2000", "2001", "2002", "2003", "2004"};
    String xAxisTitle= "Years";
    String yAxisTitle= "Problems";
    String title= "Micro$oft At Work";
    DataSeries dataSeries = new DataSeries( xAxisLabels, xAxisTitle, yAxisTitle,title );


    //From AxisChartServlet.java:createAxisChartDataSet
    double[][] data= TestDataGenerator.getRandomNumbers( 3, 7, 200, 500 );

    String[] legendLabels= { "Bugs", "Security Holes", "Backdoors" };
    Paint[] paints= TestDataGenerator.getRandomPaints( 3 );

    AxisChartDataSet acds = new AxisChartDataSet(data, legendLabels, paints,ChartType.LINE, lineChartProperties );
    dataSeries.addIAxisPlotDataSet(acds);
    AxisChart axisChart = new AxisChart(dataSeries, chartProperties, axisProperties,legendProperties, 600, 360);

    ServletEncoderHelper.encodeJPEG13(axisChart, 1.0f, response);

    }
    catch(Exception e)
    {
    System.out.println(e);
    }
    %>
      

  2.   

    问题解决了
    缺少了plot.setRenderer(renderer);