现在我要使用网上的数据来生成柱形图的网页。
像部门包含四个人:黎明,李明,李彤,李丽。
大类:IPV4,
小类:单播,多播,广播
点击部门的时候生成柱形网页,列出四个人的列表,点击其中一个人能看到这个人的IPV4全部数据,在点击IPV4柱形图
能够进入到那三个小类中。
我想问一下这个东西如何来实现?
像部门包含四个人:黎明,李明,李彤,李丽。
大类:IPV4,
小类:单播,多播,广播
点击部门的时候生成柱形网页,列出四个人的列表,点击其中一个人能看到这个人的IPV4全部数据,在点击IPV4柱形图
能够进入到那三个小类中。
我想问一下这个东西如何来实现?
解决方案 »
- 我用的是Tomcat5.5,数据源配置与代码应该都没问题但是连不上数据源这是为什么?急!!
- 数据库连接问题,在myeclipse中的JSP页面连接不成功
- 大家好,谁有DWR中文教程?
- 求JSP+JAVA 聊天室源码
- 急求一个关于checkbox的javascript
- 我的HTML中不能够正常显示出APLLET??散分求解
- 孙姐姐struts书里面的addressbook应用中的一个问题,请教高手!
- 问题!!!!!
- 关于Applet的问题,请高手进来看一下
- tomcat401的问题:启动是告诉我要“set java-home",不知为何,怎么办才好?帮帮忙,现在只能给32分
- 为什么这个jfreechart在输出的时候只有个上面的“网站访问统计表”,而没有里面的具体数据?
- 撒分了。Java高级讨论群狂招爱好者,欢迎各位加入
JFreeChart生成饼图和柱形图看看这个吧,我当时用的就是这个!!
那个做统计报表很强大
http://blog.csdn.net/ami121/category/394379.aspx
用Js也可以实现 而且js有很多比较优秀的开源插件都可以实现
http://8366.javaeye.com/blog/337674
http://www.cssrain.cn/article.asp?id=1059
http://paranimage.com/12-javascript-chart-plugins/
http://blog.csdn.net/ami121/category/394379.aspx用Js也可以实现 而且js有很多比较优秀的开源插件都可以实现
http://8366.javaeye.com/blog/337674http://www.cssrain.cn/article.asp?id=1059http://paranimage.com/12-javascript-chart-plugins/
webxml添加<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>把jfreechart中的lib加到web--info--lib里头。然后填写个代码
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ page import="java.awt.Color,
org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.category.*,
org.jfree.chart.plot.CategoryPlot,
org.jfree.chart.axis.CategoryAxis,
org.jfree.chart.axis.ValueAxis,
org.jfree.chart.renderer.category.BarRenderer3D,
org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
org.jfree.chart.axis.AxisLocation,
org.jfree.data.general.DatasetUtilities"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>
<% double[][] data = new double[][] {{172, 200, 103, 140, 126},{135, 521, 270, 340, 230},{332, 256, 323, 240, 426}};
String[] rowKeys = {"苹果","梨子","葡萄"};
String[] columnKeys = {"北京","上海","广州","成都","深圳"};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("水果销量图统计","KK","EE",dataset,PlotOrientation.VERTICAL,true,false,false);
chart.setBackgroundPaint(Color.WHITE);
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis(); ////domainAxis.setVerticalCategoryLabels(false);
plot.setDomainAxis(domainAxis);
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setUpperMargin(0.00); //设置最高的一个 Item 与图片顶端的距离
rangeAxis.setLowerMargin(0.5); //设置最低的一个 Item 与图片底端的距离
plot.setRangeAxis(rangeAxis);
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK); //设置 Wall 的颜色
renderer.setWallPaint(Color.gray); //设置每种水果代表的柱的颜色 renderer.setSeriesPaint(0, new Color(0, 0, 255));
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.GREEN); //设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.1); //显示每个柱的数值,并修改该数值的字体属性
//renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible(true);
//plot.setRenderer(renderer);
plot.setForegroundAlpha(0.6f); //设置柱的透明度
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT); //设置地区、销量的显示位置
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
String filename = ServletUtilities.saveChartAsPNG(chart, 600, 400, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; %></body>
</html>但是,项目出现错误,
Description Resource Path Location Type
The method createBarChart3D(String, String, String, CategoryDataset, PlotOrientation, boolean, boolean, boolean) in the type ChartFactory is not applicable for the arguments (String, String, String, CategoryDataset, PlotOrientation, boolean, boolean, boolean) kkk.jsp DBServer/WebContent/WEB-INF line 27 JSP Problem
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities; public class PieCharts extends ApplicationFrame{
public PieCharts(String s){
super(s);
setContentPane(createDemoPanel());
}
// 生成显示图表的面板
public static JPanel createDemoPanel(){
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}
// 生成饼图数据集对象
public static PieDataset createDataset(){
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
defaultpiedataset.setValue("管理人员",10.02D);
defaultpiedataset.setValue("市场人员",20.23D);
defaultpiedataset.setValue("开发人员",60.02D);
defaultpiedataset.setValue("OEM人员",10.02D);
defaultpiedataset.setValue("其他人员",5.11D);
return defaultpiedataset;
}
//生成图表主对象JFreeChart
public static JFreeChart createChart(PieDataset piedataset){
//定义图表对象
JFreeChart jfreechart = ChartFactory.createPieChart("CityInfoPort公司组织架构图",piedataset,true,true,false);
//获得图表显示对象
PiePlot pieplot = (PiePlot)jfreechart.getPlot();
//设置图表标签字体
pieplot.setLabelFont(new Font("SansSerif",Font.BOLD,12));
pieplot.setNoDataMessage("No data available");
pieplot.setCircular(true);
pieplot.setLabelGap(0.01D);//间距
return jfreechart;
}
public static void main(String[] args){
PieCharts fjc = new PieCharts("CityInfoPort公司组织架构图");
fjc.pack();
RefineryUtilities.centerFrameOnScreen(fjc);
fjc.setVisible(true);
} }
2:折线图 package test; 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.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities; public class LineCharts extends ApplicationFrame { public LineCharts(String s) {
super(s);
setContentPane(createDemoLine());
} public static void main(String[] args) {
LineCharts fjc = new LineCharts("折线图");
fjc.pack();
RefineryUtilities.centerFrameOnScreen(fjc);
fjc.setVisible(true); } // 生成显示图表的面板
public static JPanel createDemoLine() {
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
} // 生成图表主对象JFreeChart
public static JFreeChart createChart(DefaultCategoryDataset linedataset) {
//定义图表对象
JFreeChart chart = ChartFactory.createLineChart("折线图", // chart title
"时间", // domain axis label
"销售额(百万)", // range axis label
linedataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips
false // urls
);
CategoryPlot plot = chart.getCategoryPlot();
// 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); return chart;
} //生成数据
public static DefaultCategoryDataset createDataset() {
DefaultCategoryDataset linedataset = new DefaultCategoryDataset();
// 各曲线名称
String series1 = "冰箱";
String series2 = "彩电";
String series3 = "洗衣机"; // 横轴名称(列名称)
String type1 = "1月";
String type2 = "2月";
String type3 = "3月"; linedataset.addValue(0.0, series1, type1);
linedataset.addValue(4.2, series1, type2);
linedataset.addValue(3.9, series1, type3); linedataset.addValue(1.0, series2, type1);
linedataset.addValue(5.2, series2, type2);
linedataset.addValue(7.9, series2, type3); linedataset.addValue(2.0, series3, type1);
linedataset.addValue(9.2, series3, type2);
linedataset.addValue(8.9, series3, type3); return linedataset;
} }
3:柱状图: package test; import java.awt.Color; import javax.swing.JPanel; import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
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.general.DatasetUtilities;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities; public class BarCharts extends ApplicationFrame { public BarCharts(String s) {
super(s);
setContentPane(createDemoBar());
} // 生成显示图表的面板
public static JPanel createDemoBar() {
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
} // 生成图表主对象JFreeChart
public static JFreeChart createChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart3D("水果销量统计图", //建立3D柱状图
"水果",//横轴名称
"销量",//纵轴名称
dataset,//数据集
PlotOrientation.VERTICAL,//纵向显示
true,//显示每个颜色柱子的柱名
false, false);
CategoryPlot plot = chart.getCategoryPlot();//设置图的高级属性
BarRenderer3D renderer = new BarRenderer3D();//3D属性修改
renderer.setBaseOutlinePaint(Color.BLACK);//设置边框颜色为black
renderer.setWallPaint(Color.gray); //设置wall的颜色为gray
renderer
.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());//设置柱顶数据,API中居然没有StandardCategoryItemLabelGenerator这个类
//renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12));//设置柱顶数据字体
renderer.setItemLabelsVisible(true);//打开ItemLabel开关
plot.setRenderer(renderer);//将修改后的属性值保存到图中
plot.setForegroundAlpha(0.6f);//柱的透明度 return chart;
} // 生成数据
public static CategoryDataset createDataset() { double[][] data = new double[][] { { 672, 766, 223, 540, 126 },
{ 325, 521, 210, 340, 106 }, { 332, 256, 523, 240, 526 } };// 设置数据
String[] rowKeys = { "苹果", "梨子", "葡萄" };// 行标志
String[] columnKeys = { "北京", "上海", "广州", "成都", "深圳" };// 列标志
CategoryDataset linedataset = DatasetUtilities.createCategoryDataset(
rowKeys, columnKeys, data); // 建立数据集 return linedataset;
} public static void main(String[] args) {
BarCharts fjc = new BarCharts("柱状图");
fjc.pack();
RefineryUtilities.centerFrameOnScreen(fjc);
fjc.setVisible(true); } }
type :Status reportmessage: /test/WEB-INF/classes/test/PieCharts.javadescription: The requested resource (/test/WEB-INF/classes/test/PieCharts.java) is not available.
我就是在test包下建立上面的柱形的代码。点击run on a server,就显示上面的错误。
哪位知道是怎么回事,如何修改?
Description Resource Path Location Type
The method createPieChart(String, PieDataset, boolean, boolean, boolean) in the type ChartFactory is not applicable for the arguments (String, PieDataset, boolean, boolean, boolean) PieCharts.java DBServer/src/scylla/as/jfreechart line 44 Java Problem
错误,但是我在builder path里头就选择了一个jfreechart.jar啊。
<@ page contentType=
"text/html;charset=GBK"%>
<%@ page import=
"org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.DefaultCategoryDataset,
org.jfree.chart.plot.CategoryPlot,
org.jfree.chart.renderer.BarRenderer3D,
java.awt.GradientPaint,
java.awt.Color,
java.awt.Font,
org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
org.jfree.ui.TextAnchor,
org.jfree.chart.labels.*"%>
<%
DefaultCategoryDataset dataset =new DefaultCategoryDataset();dataset.addValue(300, "广州", "苹果");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(150, "广州", "葡萄");
dataset.addValue(340, "广州", "芒果");
dataset.addValue(-260, "广州", "荔枝");
//step2:生成图表
JFreeChart chart = ChartFactory.createBarChart3D
("流量分析图",
"类型",
"大小",
dataset, //数据集合
PlotOrientation.VERTICAL,
true,
true,
false);
CategoryPlot categoryPlot = chart.getCategoryPlot();
BarRenderer3D renderer=(BarRenderer3D)categoryPlot.getRenderer();
//显示柱子上的数值
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
//设置柱子颜色字体
renderer.setBaseItemLabelFont(new Font("黑体",Font.PLAIN,12));
renderer.setBaseItemLabelsVisible(true);
//设置柱子上数据的颜色
renderer.setItemLabelPaint(Color.BLUE);//设置柱子上比例数值的显示,如果按照默认方式显示,数值为方向正常显示
//设置柱子上显示的数据旋转90度,最后一个参数为旋转的角度值/3.14
ItemLabelPosition itemLabelPosition= new ItemLabelPosition(
ItemLabelAnchor.INSIDE12,TextAnchor.CENTER_RIGHT,
TextAnchor.CENTER_RIGHT,-1.57D);
//下面的设置是为了解决,当柱子的比例过小,而导致表示该柱子比例的数值无法显示的问题
//设置不能在柱子上正常显示的那些数值的显示方式,将这些数值显示在柱子外面
ItemLabelPosition itemLabelPositionFallback=new ItemLabelPosition(
ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_LEFT,
TextAnchor.HALF_ASCENT_LEFT,-1.57D);
//设置正常显示的柱子label的position
renderer.setPositiveItemLabelPosition(itemLabelPosition);
renderer.setNegativeItemLabelPosition(itemLabelPosition);
//设置不能正常显示的柱子label的position
renderer.setPositiveItemLabelPositionFallback(itemLabelPositionFallback);
renderer.setNegativeItemLabelPositionFallback(itemLabelPositionFallback);
categoryPlot.setRenderer(renderer);
//设置柱子的透明度
categoryPlot.setForegroundAlpha(0.8f);
//生成图形
String filename =ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL =request.getContextPath()+ "/servlet/DisplayChart?filename=" + filename;
%>
<P ALIGN="CENTER">
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#map0">
</P>
但是在
//设置正常显示的柱子label的position
renderer.setPositiveItemLabelPosition(itemLabelPosition);
renderer.setNegativeItemLabelPosition(itemLabelPosition);
//设置不能正常显示的柱子label的position
renderer.setPositiveItemLabelPositionFallback(itemLabelPositionFallback);
renderer.setNegativeItemLabelPositionFallback(itemLabelPositionFallback);
里头出现了错误,能看看是如何修改的吗?