我用ChartFactory.createLineChar创建线型图,代码为:
<%
DefaultCategoryDataset dataZZ = new DefaultCategoryDataset();
dataZZ.addValue(1, "春季=1","春季");
dataZZ.addValue(42, "夏季=42","夏季");
dataZZ.addValue(7, "秋季=7","秋季");
dataZZ.addValue(0, "冬季=0","冬季");
JFreeChart chartXX = ChartFactory.createLineChart("季度统计","","数值",dataZZ,PlotOrientation.VERTICAL,true,false,false);
chartXX.setBackgroundPaint(Color.WHITE);
chartXX.setBorderPaint(new GradientPaint(0,0,Color.white,0,1000,Color.blue));
CategoryPlot plotXX = chartXX.getCategoryPlot();
plotXX.setForegroundAlpha(0.8f);
String filenameXX=ServletUtilities.saveChartAsJPEG(chartXX,600,400,session);
String graphURLXX=request.getContextPath()+"/servlet/DisplayChart?filename="+filenameXX;
%>
<img src="<%=graphURLXX%>" border=0 usemap="#map0">
出来的效果是没有想象中的线图,只有XY轴和平行X轴的虚线。
我不清楚是不是某一步骤设错了,如果你知道,请赐教,谢谢。
<%
DefaultCategoryDataset dataZZ = new DefaultCategoryDataset();
dataZZ.addValue(1, "春季=1","春季");
dataZZ.addValue(42, "夏季=42","夏季");
dataZZ.addValue(7, "秋季=7","秋季");
dataZZ.addValue(0, "冬季=0","冬季");
JFreeChart chartXX = ChartFactory.createLineChart("季度统计","","数值",dataZZ,PlotOrientation.VERTICAL,true,false,false);
chartXX.setBackgroundPaint(Color.WHITE);
chartXX.setBorderPaint(new GradientPaint(0,0,Color.white,0,1000,Color.blue));
CategoryPlot plotXX = chartXX.getCategoryPlot();
plotXX.setForegroundAlpha(0.8f);
String filenameXX=ServletUtilities.saveChartAsJPEG(chartXX,600,400,session);
String graphURLXX=request.getContextPath()+"/servlet/DisplayChart?filename="+filenameXX;
%>
<img src="<%=graphURLXX%>" border=0 usemap="#map0">
出来的效果是没有想象中的线图,只有XY轴和平行X轴的虚线。
我不清楚是不是某一步骤设错了,如果你知道,请赐教,谢谢。
解决方案 »
- Applet如何向服务器的指定目录传递文件
- JAVA exception 定义问题
- 请...问... 把List a 中的数据倒到List b 中, 要保留其排序顺序请问如何实现.
- 怎样在simpledateformat中的format与oracle中date型的format之间进行转换?
- 小弟跪地求程序,求各位大人帮忙!!!!!!
- 为什么我没有oracle.sql.BLOB.empty_lob()这个函数?
- java thread问题的不解
- Runtime的exec的奇怪问题
- Java的class文件,怎么可以转为.EXE文件???
- about Java
- 我的robocode为什么运行不了呢?
- Struts 的Action方法中如何定义和抛出自定义异常?
package barchart3d;import campaign.BaseCamp;
import java.awt.Dimension;
import java.awt.Color;import javax.swing.JCheckBox;
import javax.swing.JPanel;import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import campaign.*;//public class BarChart3D extends ApplicationFrame
public class BarChart3D
{
public JPanel jpanel;
public BarChart3D(String[][] arrStrData) {
//super(string);//Windows Form name
//String[][] arrStrData = CampOption.getPictureData(myCamp);
/*{{"10","项目1","时间段1"},
{"15","项目2","时间段1"},
{"12","项目1","时间段2"},
{"16","项目2","时间段2"}};*/
try{
jpanel = createPanel(createDataset(arrStrData),"综合数据分析","季度值","数值");
jpanel.setPreferredSize(new Dimension(500, 400));
//setContentPane(jpanel);
}catch(CategoryDataException e){e.printStackTrace();}
}
//生成测试数据集
private CategoryDataset createDataset() {
DefaultCategoryDataset defaultcategorydataset
= new DefaultCategoryDataset();
defaultcategorydataset.addValue(10.0, "增员数量", "第一季度");
defaultcategorydataset.addValue(4.0, "增员数量", "第二季度");
defaultcategorydataset.addValue(15.0, "增员数量", "第三季度");
defaultcategorydataset.addValue(14.0, "增员数量", "第四季度");
defaultcategorydataset.addValue(5.0, "新客户数量", "第一季度");
defaultcategorydataset.addValue(7.0, "新客户数量", "第二季度");
defaultcategorydataset.addValue(14.0, "新客户数量", "第三季度");
defaultcategorydataset.addValue(3.0, "新客户数量", "第四季度");
return defaultcategorydataset;
}
//根据传入的数组创建CategoryDataset数据集
private CategoryDataset createDataset(String[][] arrStrData) throws CategoryDataException {
if(arrStrData.length==0) throw new CategoryDataException("数组长度为零,不能创建Category数据集。");
if(arrStrData.length>0)
if(arrStrData[0].length != 3) throw new CategoryDataException("数组列数不为3,不能创建Category数据集。");
DefaultCategoryDataset defaultcategorydataset
= new DefaultCategoryDataset();
for(int i=0;i<arrStrData.length;i++){
if(arrStrData[i][1].length() == 0) throw new CategoryDataException("数据行"+(i+1)+"列2长度为0,不能创建Category数据集。");
if(arrStrData[i][2].length() == 0) throw new CategoryDataException("数据行"+(i+1)+"列3长度为0,不能创建Category数据集。");
defaultcategorydataset.addValue(Double.valueOf(arrStrData[i][0]), arrStrData[i][1], arrStrData[i][2]);
}
return defaultcategorydataset;
}
//生成JFreeChart对象
private JFreeChart createChart(CategoryDataset categorydataset,
String strChartName,
String strAxisName,
String strValueAxisName) {
JFreeChart jfreechart
= ChartFactory.createBarChart3D(strChartName/*数据图名称*/,
strAxisName/*时间轴名称*/,
strValueAxisName/*数值轴名称*/,
categorydataset,
PlotOrientation.VERTICAL, true,
true, false);
CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
categoryplot.setDomainGridlinesVisible(true);
CategoryAxis categoryaxis = categoryplot.getDomainAxis();
//设置“Category X”字样的摆放角度,以double类型的数值给出
categoryaxis.setCategoryLabelPositions
(CategoryLabelPositions.STANDARD);//double类型的数值
//(CategoryLabelPositions.createUpRotationLabelPositions(0.39269908169872414));
//categoryaxis.setLowerMargin(0.0);//最小的Category距Value轴的距离
//categoryaxis.setUpperMargin(0.0);//最小的Category距对面虚Value轴的距离
//自动分割各个系列之间的距离
//categoryaxis.setCategoryMargin(0.2);//各个Category之间相对于整个时间轴长度的百分比距离
BarRenderer3D barrenderer3d
= (BarRenderer3D) categoryplot.getRenderer();
//barrenderer3d.setItemMargin(0.0);//各个render对象之间的距离(即各个柱体之间的距离),不设置则自动调整
//barrenderer3d.setWallPaint(Color.gray);//设置3D侧面墙的颜色
//barrenderer3d.setSeriesPaint(0, Color.GREEN);//设置第一根柱体颜色
barrenderer3d.setDrawBarOutline(true);//是否画棱线(各面相交产生的线段)
return jfreechart;
}
//将JFreeChart对象包装在JPanel对象内
public JPanel createPanel(CategoryDataset categorydataset,
String strChartName,
String strAxisName,
String strValueAxisName) {
JFreeChart jfreechart = createChart(categorydataset,
strChartName,
strAxisName,
strValueAxisName);
return new ChartPanel(jfreechart);
}
public JPanel getPanel() {
return jpanel;
}
}