public JFreeChart getChart()throws IOException
{
JFreeChart chart = ChartFactory.createLineChart(
new String(title.getBytes("iso_8859_1"),"gb2312"), // 图表标题
new String(vertical_label.getBytes("iso_8859_1"),"gb2312"), // 目录轴的显示标签
new String(horizontal_label.getBytes("iso_8859_1"),"gb2312"), // 数值轴的显示标签
this.getDataSet(), // 数据集
isVertical?PlotOrientation.VERTICAL:PlotOrientation.HORIZONTAL, // 图表方向:水平、垂直
true,  // 是否显示图例(对于简单的柱状图必须是false)
false,  // 是否生成工具
false  // 是否生成URL链接
);       // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
        StandardLegend legend = (StandardLegend) chart.getLegend();
        legend.setDisplaySeriesShapes(true);        chart.setBackgroundPaint(new Color(0xCC, 0xCC, 0xFF));        CategoryPlot plot = chart.getCategoryPlot();        // customise the domain axis...
        CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setVerticalCategoryLabels(true);        // customise the range axis...
        NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        rangeAxis.setAutoRangeIncludesZero(true);
        rangeAxis.setUpperMargin(0.20);
        rangeAxis.setLabelAngle(Math.PI / 2.0);        // customise the renderer...
        LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
        renderer.setDrawShapes(true);        renderer.setSeriesStroke(
            0, new BasicStroke(2.0f,
                               BasicStroke.CAP_ROUND,
                               BasicStroke.JOIN_ROUND,
                               1.0f,
                               new float[] {10.0f, 6.0f},
                               0.0f)
        );
        renderer.setSeriesStroke(
            1, new BasicStroke(2.0f,
                               BasicStroke.CAP_ROUND,
                               BasicStroke.JOIN_ROUND,
                               1.0f,
                               new float[] {6.0f, 6.0f},
                               0.0f)
        );
        renderer.setSeriesStroke(
            2, new BasicStroke(2.0f,
                               BasicStroke.CAP_ROUND,
                               BasicStroke.JOIN_ROUND,
                               1.0f,
                               new float[] {2.0f, 6.0f},
                               0.0f)
        );        renderer.setItemLabelsVisible(true);
        renderer.setItemLabelTextAnchor(TextAnchor.BOTTOM_CENTER);
        renderer.setItemLabelAnchor(ItemLabelAnchor.OUTSIDE12); return chart;
}

/**
 *
 * @return
 */
public CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();

for(int i=1;i<data.length;i++){
try{
dataset.addValue(
Integer.valueOf(data[i][0]), 
new String(data[i][1].getBytes("iso_8859-1"),"gb2312"),
new String(data[i][2].getBytes("iso_8859-1"),"gb2312")
);
}catch(Exception e){

}
} return dataset;
}