package com.xmddl.jfreechart;
import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
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.chart.renderer.category.StackedBarRenderer3D;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.jdbc.JDBCXYDataset;
import com.xmddl.common.DBService;
public class JFreeChartServlet1 extends HttpServlet {
static Connection con = DBService.getInstance().getConnection();
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Constructor of the object.
*/
public JFreeChartServlet1() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");
DefaultCategoryDataset data = getDataSet();
JFreeChart chart = ChartFactory.createStackedBarChart("水果销量图统计", null,
null, data, 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();
// 设置最高的一个 Item 与图片顶端的距离
rangeAxis.setUpperMargin(0.15);
// 设置最低的一个 Item 与图片底端的距离
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);
// BarRenderer3D renderer = new BarRenderer3D();
StackedBarRenderer3D renderer = new StackedBarRenderer3D();
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);
// 设置每种水果代表的柱的 Outline 颜色
renderer.setSeriesOutlinePaint(0, Color.BLACK);
renderer.setSeriesOutlinePaint(1, Color.BLACK);
renderer.setSeriesOutlinePaint(2, Color.BLACK);
// 设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.1);
// 显示每个柱的数值,并修改该数值的字体属性
renderer
.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font("黑体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);
renderer.setMaximumBarWidth(0.08D);
plot.setRenderer(renderer);
// 设置柱的透明度<BR>
plot.setForegroundAlpha(0.6f);
// 设置地区、销量的显示位置<BR>
plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 500, chart,
600, 400, null);
}
/**
* 获取一个演示用的简单数据集对象
*
* @return
*/
private static DefaultCategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
return dataset;
// dataset.setValue("苹果",100);
// dataset.setValue("梨子", 200);
// dataset.setValue("葡萄", 300);
// dataset.setValue("香蕉", 200);
// dataset.setValue("荔枝", 200);
// return dataset;
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occure
*/
public void init() throws ServletException {
// Put your code here
}
}
- 大小: 688.6 KB
分享到:
相关推荐
通过以上介绍,你应该对JFreeChart有了初步的认识。实际操作时,结合提供的实例,你会发现JFreeChart是一个功能丰富且易于使用的图表库。不断探索和实践,你将能够充分利用它来实现各种复杂的数据可视化需求。记住,...
《JFreeChart实战:深入解析官网DEMO及源代码》 ...通过以上的讲解,相信读者对JFreeChart已经有了初步的了解。实际操作DEMO并研究源代码,将使你对这个强大的图表库有更深入的认识,从而更好地应用于实际项目。
- **初步排查**:首先确认代码本身是否存在错误。例如,确保所有必要的JAR包已正确导入项目。 - **示例代码**:通常情况下,开发者会参考网络上的示例代码。需要注意的是,即使代码是从可靠的源代码库拷贝过来的,...
**JFreeChart 1.0 教程** JFreeChart 是一个开源的 Java 图形库,...通过以上内容,你应该对 JFreeChart 1.0 有了初步的认识,继续深入实践和探索,你会发现它的强大功能和灵活性,能够满足各种复杂的数据可视化需求。
**JFreeChart学习笔记**...通过上述内容,你应该对JFreeChart有了初步了解,可以开始尝试创建自己的图表。在实际操作中,查阅JFreeChart的官方文档和示例代码会更有利于掌握其精髓。祝你在数据可视化领域取得更多成就!
提供的代码片段展示了如何使用JOptionPane显示消息对话框,以及如何读取Excel文件并进行初步的数据处理。`ReadFileUsingFileChooser()`方法应该是用于读取Excel文件并创建`Employee`对象列表的部分。 8. **运行...
**JFreeChart 入门教程** ...通过这个 JFreeChart 入门教程,你应该对如何使用 JFreeChart 创建和自定义图表有了初步了解。继续深入实践,你将能够熟练地利用 JFreeChart 实现各种复杂的图表需求。
通过以上讲解,你应该对JFreeChart的基本用法有了初步了解。阅读提供的文档,如"JFreeChart中柱状图的详细设置.doc",将有助于进一步掌握柱状图的高级定制技巧。不断实践和探索,你将能够充分利用JFreeChart创建出...
6. **报表分析**:3D饼状图通常用于数据的概览,你需要知道如何解读和解释饼图中的数据分布,以及如何根据这些信息进行初步的分析。 7. **源码阅读**:项目提供完整的源码,这是学习的好机会。通过阅读和理解代码,...
1 Tomcat服务器 2 eclipse集成开发环境 3 JS讲义 ...5 CSS01讲义 6 servle技术初步入门 7 servle核心技术 8 JSP技术初步入门 9 JSP核心技术与应用 10 JSTL技术介绍 ...专题 JFreeChart技术 专题 Ibatis技术
在抓取数据时,我们需要注意防止反爬虫机器人的干扰,并且需要对数据进行初步清洗。 在本次数据分析中,我们抓取了豆瓣图书的所有热门标签下的图书数据,共计 145 个标签。然后,我们对数据进行处理和分析,包括...
本系统是一个完整的JSP-JAVA应用项目,合适有初步JSP编程经验的朋友们提高和学习之用。 系统含全套源码,合适朋友们在此基础上举一反三结合实际开发出优秀的JSP应用系统。 本系统是Web模式的股票信息管理系统 ...
本系统是一个完整的JSP-JAVA应用项目,合适有初步JSP编程经验的朋友们提高和学习之用。 系统含全套源码,合适朋友们在此基础上举一反三结合实际开发出优秀的JSP应用系统。 本系统是Web模式的股票信息管理系统 ...
通过解压并阅读其中的readme.txt文件,开发者获取了初步的指导思路,了解到该模块能够简化Flex与JSP集成的过程。 #### 3. 集成步骤详解 - **下载并解压FlexModule_j2ee.zip**:这是集成Flex到JSP项目的首要步骤。 ...
在"plant_flowsheet_interface"中,开发者很可能使用了诸如Sketch、Adobe XD或Figma等设计工具来创建初步的界面布局,然后将其转化为可交互的Java应用程序。这样的设计流程有助于确保最终产品符合用户的操作习惯,...
- **jFreeChart**:虽然jFreeChart主要是一个图表库,但也可以用于生成条形码,特别是Code 128和Code 39。 2. **使用ZXing生成条码** 首先,你需要在项目中引入ZXing库。然后,你可以创建一个`BitMatrix`对象,将...
下位机负责数据的采集和初步处理,而上位机则负责数据的进一步处理、存储以及控制命令的发送。具体实现包括: - **下位机**:使用ADI公司的ADuC7026微控制器采集环境数据,并通过Max232芯片将数据发送至上位机。 - ...
在数据库建模阶段,作者进行了业务建模、需求定义、分析和初步设计,以及数据库的物理实现,将对象类转换为关系模式,以适应数据存储和查询的需求。在系统分析部分,论文详细划分了系统的各个模块,例如人事管理模块...
系统会自动根据设定的规则进行初步审核,然后流转至相关人员进行人工复核。这涉及工作流引擎,如Activiti,用于管理审批流程。 4. **通知与公告发布**:系统能够实时向学生推送申请状态更新,同时发布相关的奖助学...