jfreechart如何在web Servlet中应用JFreeChart
jfreechart 时间:2021-06-16 阅读:(
)
这个效果使用jfreechart做的吗? 地图的放大,缩小,以及移动
一般web版的地图,都是使用对应GIS的前台api来实现的,所谓放大和缩小,是GIS服务器中存放的不同比例尺的地图图片拼接上去的,并不是真正将大比例尺的图放大,而是进行了图片的切换,和放大缩小无关,只是同一个地点的不同比例尺的图片而已,你可以尝试以这种思路,监听jfreechart的事件,进行底图的切换,也许可以实现类似的效果jfreechart的利与弊
来说说 jFreechart 和 birt,openFlashChart的比较吧~
jFreechart 前端表现还可以, 但后端SQL支持较弱,不像birt可以设置存储过程,交叉表。
不支持AOP植入。
birt: 后端功能挺强大的。
可以自定义 AOP函数, 同时可以灵活调整数据源。
对于前端展现,有些麻烦。
需要自己配置CSS 加载library.但如果请美工专门做了设计,效果也能接受 。
它默认提供的报表控件(例如 饼图,仪表盘,柱图)说实话挺丑。
openFlashchart是个开源的东东。
使用json做数据传输。
但它基本和jfreechart一个意思,对后端基本没有支持。
但前端可以发布成比较炫的flash.也是个前端展现的选择。
JFreeChart的优缺点
优点:目前最好的java图表解决方案,功能强大,基本涵盖了各种图表;java实现,扩展性强,API较完善,支持多种输出方式。
缺点:类及接口较多,需花较长时间研究;如果以文件或响应流输出则缺少交互功能,为实现交互功能需借助Frame或Applet等,各有一定弊端。
总的来说,使用JFreeChart技术能够按需求定制各种图表,通过某种方式也能够实现多样的人机交互功能,JFreeChart是一个以java为基础的,值得深入研究的开源图表技术。
ireport和jfreechart有什么区别
ireport是一个报表模板工具,它是个可视化的模板编辑工具,做好的报表模板,它是结合jasperreport来使用的,通过jasperreport的类来为模板填充数据来得到我们想要的报表。
jfreechart是一个图表式的报表,像饼图,曲线图什么的。
现在ireport这个报表工具可以把jfreechart集成到报表里面。
如何在web Servlet中应用JFreeChart
import java.sql.*;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
.jfree.chart.ChartFactory;
.jfree.chart.ChartUtilities;
.jfree.chart.JFreeChart;
.jfree.chart.axis.CategoryAxis;
.jfree.chart.axis.CategoryLabelPositions;
.jfree.chart.axis.ValueAxis;
.jfree.chart.plot.CategoryPlot;
.jfree.chart.plot.PiePlot;
.jfree.chart.plot.PlotOrientation;
.jfree.chart.renderer.category.BarRenderer;
.jfree.chart.title.TextTitle;
.jfree.data.category.DefaultCategoryDataset;
.jfree.data.general.DefaultPieDataset;
.zhaoming.shopping.util.DB;
public class ShowProductSalesServlet extends HttpServlet
{
/**
*
*/
private static final long serialVersionUID = 1L;
private static DefaultCategoryDataset barDataset = new DefaultCategoryDataset();
private static DefaultPieDataset pieDataset = new DefaultPieDataset();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
req.setCharacterEncoding("GBK");
resp.setCharacterEncoding("GBK");
// 创建数据
getDataSet();
// 创建 JFreeChart 对象
//直方图
JFreeChart chart = ChartFactory.createBarChart("商品销量图", "商品", "销量",
barDataset, PlotOrientation.VERTICAL, true, true, false);
// 配置JFreeChart对象相关信息,如:字体大小,颜色,防止乱码
ShowProductSalesServlet.configFont(chart);
// 输出
//创建 Jfreechart对象 实现饼图
JFreeChart jfreechart = ChartFactory.createPieChart3D("pieChart", pieDataset, true, true, false);
//为了防止出现乱码,对于字体进行设置
jfreechart.getTitle().setFont(new Font("宋体", Font.CENTER_BASELINE, 20));//设置标题字体
PiePlot piePlot= (PiePlot) jfreechart.getPlot();//获取图表区域对象
piePlot.setLabelFont(new Font("宋体",Font.BOLD,10));
jfreechart.getLegend().setItemFont(new Font("微软雅黑",Font.BOLD,10));
//得到图片
FileOutputStream fos_jpg = null;
FileOutputStream fos_jpg2 = null;
try
{
//把图片存到硬盘的相对位置
fos_jpg = new FileOutputStream(
"F:\svnTest\webTest\project\Shopping2\WebRoot\images\chart\Bar.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg, 0.99f, chart, 800, 600,
null);
fos_jpg2 = new FileOutputStream(
"F:\svnTest\webTest\project\Shopping2\WebRoot\images\chart\Pie.jpg");
// 用工具把图象写到硬盘,支持两种格式,JPG,PNG,还支持MAP
ChartUtilities.writeChartAsJPEG(fos_jpg2, 0.99f, jfreechart, 600,
400, null);
this.getServletContext().getRequestDispatcher(
"/admin/ShowProductSalesChart.jsp").forward(req, resp);
fos_jpg.close();
fos_jpg2.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
//连接数据库,拿到相应的数据,设置到对象中
public static void getDataSet()
{
// 创建数据
// 数据初始化
Connection conn = null;
ResultSet rs = null;
try
{
conn = DB.getConn();
String sql = "select p.name ,sum(pcont) from product p join salesitem si on ( p.id = si.productid) group by p.id";
//System.out.println("sales sql" + sql);
rs = DB.getRs(conn, sql);
while (rs.next())
{
barDataset.addValue(rs.getInt(2),"", rs.getString(1));
pieDataset.setValue(rs.getString(1), rs.getInt(2));
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
DB.close(rs);
DB.close(conn);
}
}
/**
* 对生成的直方图像进行设置
* @param chart
*/
public static void configFont(JFreeChart chart)
{
// 设置边框宽度
chart.setBorderStroke(new BasicStroke(1));
// 设置边框是否可见
chart.setBorderVisible(true);
// 设置边框着色
chart.setBorderPaint(Color.cyan);
// 设置背景颜色
// chart.setBackgroundPaint(Color.YELLOW);
// 配置字体
Font xfont = new Font("宋体", Font.CENTER_BASELINE, 20);// X轴
Font yfont = new Font("宋体", Font.CENTER_BASELINE, 20);// Y轴
Font kfont = new Font("宋体", Font.CENTER_BASELINE, 18);// 底部
Font titleFont = new Font("微软雅黑", Font.CENTER_BASELINE, 25); // 图片标题
CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象
// 数据轴网格线条颜色
plot.setRangeGridlinePaint(Color.BLUE);
// 数据轴网格线条笔触
plot.setRangeGridlineStroke(new BasicStroke(1.0f));
// 图片标题
chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont));
// 底部字体样式,防止乱码
chart.getLegend().setItemFont(kfont);
// X轴
CategoryAxis domainAxis = plot.getDomainAxis();
// 设置X轴标题字体
domainAxis.setLabelFont(xfont);
// 设置X轴字体
domainAxis.setTickLabelFont(xfont);
// 设置字体颜色
domainAxis.setTickLabelPaint(Color.BLUE);
// 横轴上的label斜显示
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
// domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
// 分类轴边距,同种类型之间的距离
// 这是分类之间的距离,和BAR与BAR之间的距离有差别
// domainAxis.setCategoryMargin(0.2f);
// 分类轴下(左)边距,就是离左边的距离
domainAxis.setLowerMargin(0.1);
// 分类轴下(右)边距,就是离最右边的距离
domainAxis.setUpperMargin(0.1);
// Y 轴
ValueAxis rangeAxis = plot.getRangeAxis();
// 设置Y轴标题字体
rangeAxis.setLabelFont(yfont);
// 设置Y轴字体
rangeAxis.setTickLabelFont(yfont);
// 字体颜色
rangeAxis.setLabelPaint(Color.RED);
// 设置Bar的颜色
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setSeriesPaint(0, Color.gray);
renderer.setSeriesPaint(1, Color.orange);
// 每个BAR之间的间隔
renderer.setItemMargin(0.0f);
// 每个BAR的最大宽度
// renderer.setMaximumBarWidth(0.5f);
}
}
陆零网络是正规的IDC公司,我们采用优质硬件和网络,为客户提供高速、稳定的云计算服务。公司拥有一流的技术团队,提供7*24小时1对1售后服务,让您无后顾之忧。我们目前提供高防空间、云服务器、物理服务器,高防IP等众多产品,为您提供轻松上云、安全防护 为核心数据库、关键应用系统、高性能计算业务提供云端专用的高性能、安全隔离的物理集群。分钟级交付周期助你的企业获得实时的业务响应能力,助力核心业务飞速成...
百纵科技:美国云服务器活动重磅来袭,洛杉矶C3机房 带金盾高防,会员后台可自助管理防火墙,添加黑白名单 CC策略开启低中高.CPU全系列E52680v3 DDR4内存 三星固态盘列阵。另有高防清洗!百纵科技官网:https://www.baizon.cn/联系QQ:3005827206美国洛杉矶 CN2 云服务器CPU内存带宽数据盘防御价格活动活动地址1核1G10M10G10G38/月续费同价点击...
韩国云服务器哪个好?韩国云服务器好用吗?韩国是距离我国很近的一个国家,很多站长用户在考虑国外云服务器时,也会将韩国云服务器列入其中。绝大部分用户都是接触的免备案香港和美国居多,在加上服务器确实不错,所以形成了习惯性依赖。但也有不少用户开始寻找其它的海外免备案云服务器,比如韩国云服务器。下面云服务器网(yuntue.com)就推荐最好用的韩国cn2云服务器,韩国CN2云服务器租用推荐。为什么推荐租用...
jfreechart为你推荐
订房系统酒店PMS系统具体是什么mergefield邮件合并中如何插入百分数youtube创始人我的世界captainsparklez是谁比思论坛永久域名不知道为什么 比思论坛的网站打不开 怎么办呐代发邮件邮件代发会不会有短信代发那么好的市场效益呢?flash实例flash CS3 实例的属性面板里的实例名称是指什么无处不在的意思,幸福无处不在,最适合才是最好是什么意思pat是什么格式photoshop填充图案是pat格式,需用什么软件打开?请高人指点,谢谢~pat是什么格式如何把JPG图片变为PAT格式图片?云输入法QQ云输入法怎样进行中英文切换?
郑州虚拟主机 二级域名查询 美国vps评测 服务器评测 permitrootlogin evssl证书 patcha 日本空间 嘉洲服务器 台湾谷歌网址 帽子云 789电视 泉州移动 中国电信宽带测速网 东莞服务器 starry 游戏服务器出租 lamp什么意思 深圳域名 实惠 更多