package com.gamemag.web.player;
import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import com.gamemag.entity.player.SilverRetained;
publicclass SilverLineChart {
privatestatic CategoryDataset createDataset() {
DefaultCategoryDataset dateaset = new DefaultCategoryDataset();
dateaset.addValue(672, "苹果", "北京");
dateaset.addValue(766, "苹果", "上海");
dateaset.addValue(223, "苹果", "广州");
dateaset.addValue(540, "苹果", "成都");
dateaset.addValue(126, "苹果", "深圳");
dateaset.addValue(325, "梨子", "北京");
dateaset.addValue(521, "梨子", "上海");
dateaset.addValue(210, "梨子", "广州");
dateaset.addValue(340, "梨子", "成都");
dateaset.addValue(106, "梨子", "深圳");
dateaset.addValue(332, "葡萄", "北京");
dateaset.addValue(766, "葡萄", "上海");
dateaset.addValue(523, "葡萄", "广州");
dateaset.addValue(240, "葡萄", "成都");
dateaset.addValue(526, "葡萄", "深圳");
return dateaset;
}
// 创建JFreeChar对象
privatestatic JFreeChart createChart(CategoryDataset categoydataset) {
JFreeChart jfreechart = ChartFactory.createLineChart("", null, null,
categoydataset, PlotOrientation.VERTICAL, true, true, false);
jfreechart.setTextAntiAlias(false);
jfreechart.setBackgroundPaint(Color.WHITE);
// 设置图标题的字体重新设置title
Font font = new Font("线体", Font.BOLD, 25);
TextTitle title = jfreechart.getTitle();
title.setFont(font);
jfreechart.setTitle(title);
// 设置面板字体
Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);
jfreechart.setBackgroundPaint(Color.WHITE);
CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
categoryplot.setDomainGridlinesVisible(true);// x轴 // 分类轴网格是否可见
categoryplot.setRangeGridlinesVisible(true);// y轴 //数据轴网格是否可见
categoryplot.setRangeGridlinePaint(Color.WHITE);// 虚线色彩
categoryplot.setDomainGridlinePaint(Color.WHITE);// 虚线色彩
categoryplot.setBackgroundPaint(Color.lightGray);
jfreechart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));// 图例文字
jfreechart.getLegend().setPosition(RectangleEdge.RIGHT); // 图例居右
// 设置轴和面板之间的距离
// categoryplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
CategoryAxis domainAxis = categoryplot.getDomainAxis();
domainAxis.setLabelFont(labelFont);// 轴标题
domainAxis.setTickLabelFont(labelFont);// 轴数值
// domainAxis.setAxisLineStroke(new BasicStroke(1.6f)); // 设置轴线粗细
// domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
// // 横轴上的 Lable ,45度倾斜
domainAxis.setLowerMargin(0.0);// 设置距离图片左端距离
domainAxis.setUpperMargin(0.0);// 设置距离图片右端距离
NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
numberaxis.setLabelFont(labelFont);
numberaxis.setTickLabelFont(labelFont);
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
numberaxis.setAutoRangeIncludesZero(true);
// numberaxis.setAxisLineStroke(new BasicStroke(1.6f)); // 设置轴线粗细
// 获得renderer 注意这里是下嗍造型到lineandshaperenderer!!
LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot
.getRenderer();
lineandshaperenderer.setBaseShapesVisible(true); // series 点(即数据点)可见
lineandshaperenderer.setBaseLinesVisible(true); // series 点(即数据点)间有连线可见
// 获取折线对象 ,设置折线粗细
LineAndShapeRenderer renderer = (LineAndShapeRenderer) categoryplot
.getRenderer();
BasicStroke realLine = new BasicStroke(2.8f); // 设置实线
// 设置虚线
float dashes[] = { 5.0f };
BasicStroke brokenLine = new BasicStroke(8.2f, // 线条粗细
BasicStroke.CAP_ROUND, // 端点风格
BasicStroke.JOIN_ROUND, // 折点风格
8f, dashes, 3.6f);
for (int i = 0; i < categoydataset.getRowCount(); i++) {
if (i % 2 == 0)
renderer.setSeriesStroke(i, realLine); // 利用实线绘制
else
renderer.setSeriesStroke(i, brokenLine); // 利用虚线绘制
}
// 显示折点数据
// lineandshaperenderer.setBaseItemLabelGenerator(new
// StandardCategoryItemLabelGenerator());
// lineandshaperenderer.setBaseItemLabelsVisible(true);
return jfreechart;
}
publicstatic String generateLineChart(HttpSession session, PrintWriter out) throws IOException {
String filename = null;
CategoryDataset categoryDateset = createDataset();
JFreeChart chart = createChart(categoryDateset);
/**
* File directory = new File(".");
* System.out.println(directory.getCanonicalPath()+"=========="+img_path);
*
* FileOutputStream fos_jpg = null; try {
* fos_jpg = new FileOutputStream("fruit.jpg");
* ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, chart, 400,300,null);
* } finally {
* try {
* fos_jpg.close();
* } catch (Exception e) {} }
**/
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
try {
filename = ServletUtilities.saveChartAsPNG(chart, 600, 320, info,
session);
ChartUtilities.writeImageMap(out, filename, info, false);
} catch (IOException e) {
e.printStackTrace();
}
out.flush();
return filename;
}
}
调用方式:
SilverLineChart line = new SilverLineChart();
HttpSession session = ServletActionContext.getRequest().getSession();
HttpServletResponse response = ServletActionContext.getResponse();
PrintWriter out = response.getWriter();
filename = line.generateLineChart(session, out );
filename = "/DisplayChart?filename=" + filename;
<!-- jfreechar 配置web.xml -->
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/DisplayChart</url-pattern>
</servlet-mapping>
相关推荐
C#绘制折线图 折线图是一种常用的数据可视化方法,用于展示数据的趋势和变化。C#提供了多种绘制折线图的方法,包括使用 Graphics 类、Bitmap 类和 Pen 类等。在本文中,我们将介绍如何使用 C# 绘制折线图,包括绘制...
在JavaScript(js)中实现折线图是一种常见的数据可视化需求,尤其在网页开发中,用于展示动态或静态的数据。折线图能够清晰地展现数据的变化趋势,帮助用户理解和分析数据。下面将详细介绍如何使用JavaScript来创建...
在PB中,自定义折线图是一项关键功能,它允许开发者根据特定需求创建具有个性化特性的图表,以便更好地可视化数据。本文将深入探讨PB自定义折线图的相关知识点,并通过分析"Graph2"这个文件来提供具体的实践指导。 ...
而Echarts是一款由百度开发的开源数据可视化库,它支持各种图表类型,如折线图、柱状图、饼图等,为数据分析和展示提供了强大的支持。 在"EasyUI表格合并"这一主题中,我们主要讨论的是如何使用EasyUI的datagrid...
MPAndroidChart是一款强大的开源库,用于在Android平台上创建各种图表,包括折线图、柱状图、饼图等。这个"MPAndroidChart折线图Demo"是开发者分享的一个实例,帮助我们了解如何在Android应用中集成和使用...
折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制折线图绘制...
在Java编程环境中,绘制折线图是一项常见的任务,特别是在数据分析、可视化或教学示例中。这个"java折线图绘制程序"是专为这个目的设计的,它允许开发者和用户轻松地创建和显示折线图,以便更好地理解和解释数据。 ...
在Java的Swing环境中,JFreeChart库是一个强大的工具,用于创建各种图表,包括柱状图、折线图等。本教程将详细讲解如何利用JFreeChart在Swing应用程序中实现这些功能,以及如何在折线图中动态添加线。 首先,确保你...
在数据分析和可视化领域,折线图是一种非常常见且实用的图表类型,用于展示数据随时间变化的趋势或比较多个变量的变化情况。本主题将深入探讨如何实现一个简单的折线图,并探讨其可扩展性。 首先,我们需要理解折线...
在本文中,我们将深入探讨如何使用Visual Studio 2010和Winform技术来创建具有拼图、柱形图和折线图功能的应用程序。这些图表类型是数据分析和可视化中的基本元素,对于呈现数据和解释趋势至关重要。 首先,让我们...
在数据分析和可视化领域,折线图是一种非常常见且强大的工具,尤其在展示数据随时间变化的趋势时尤为适用。本文将针对R语言的新手和小白,详细介绍如何使用R语言绘制出美观且具有信息量的折线图。 首先,我们需要...
标题"Chart折线图,从左往右依次执行"所指的是一种特定的图表展示方式,即折线图的数据点不是一次性全部显示,而是按照一定的顺序,从屏幕左侧开始,逐步向右侧移动,直至到达横坐标的最大值,然后清空数据,重新...
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JFreeChart则是一个强大的Java图表库,能够帮助开发者生成各种复杂的图表,包括折线图。本教程将详细介绍如何在JSP中利用JFreeChart库来...
"jq报表折线图"这个功能模块显然聚焦于利用jQuery(jq)库来实现动态和交互式的报表,特别是折线图这一图表类型。以下是关于这个主题的详细解释: **jQuery(jq)库** jQuery是一个轻量级的JavaScript库,它简化了...
自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、饼状图的类自绘折线图、柱状图、...
"Draw图表(折线图)"这个压缩包文件很可能是包含了一个用于创建和展示折线图的软件或代码示例,方便用户直接使用或学习。 折线图是通过将数据点用线条连接起来形成的图形,这些数据点通常代表不同时间点上的数值。它...
在Android开发中,折线图是一种常见的数据可视化方式,它能直观地展示数据的变化趋势。本文将详细讲解如何使用Android Studio来实现一个折线图。 首先,你需要选择一个图形库来帮助绘制折线图。在Android社区中,有...
在这个"易语言折线图例程"中,我们可以深入探讨易语言如何实现折线图的绘制与操作。 折线图是一种常见的数据可视化方式,用于展示数据随时间变化的趋势。在本例程中,包含三个关键的子程序:"子程序_初始折线显示...
VS2008环境下Teechart绘制折线图柱状图 TeeChart是业界知名的数据可视化控件,它可以帮助开发者快速创建各种类型的图表,例如折线图、柱状图、三维图等。在VS2008环境下使用TeeChart绘制折线图柱状图需要按照以下...