大数据与人工智能交流头条号为广大初学者增加了C、Ja、Python、Scala、jascript等流行的计算机和大数据编程语言。希望大家以后多多关注这个头条号。
首先,获取图片
JfreeChart组件可以生成jpeg和png格式的图片,其输出方式可以直接存储在硬盘中,也可以由JfreeChart组件管理。在web应用程序中,生成的图形报告通常是动态报告。如果每次都保存生成的图表,会产生大量的垃圾文件,用JfreeChart组件来管理是个不错的选择。
1.配置JFreeChart
JfreeChart组件提供了一个Servlet文件来获取生成的图像。这个Servlet文件存在于JfreeChart组件包中,所以在使用时需要在web.xml中进行配置。
& ltservlet & gt
& ltservlet-name & gt;显示图表& lt/servlet-name & gt;
& ltservlet-class & gt;org . jfree . chart . servlet . display chart & lt;/servlet-class & gt;
& lt/servlet & gt;
& ltservlet映射& gt
& ltservlet-name & gt;显示图表& lt/servlet-name & gt;
& lturl模式& gt/servlet/display chart & lt;/URL-pattern & gt;
& lt/servlet-mapping & gt;
2.获取图片
在输出图片之前,必须先生成由JfreeChart组件绘制的图片。这个操作是通过调用ServletUtilities类的seChartAsJPEG()方法实现的,该方法返回。jpeg格式:
公共静态字符串seChartAsJPEG(JfreeChart chart,int width,int height,HttpSession会话)
用这种方法生成图像后,通过调用注册的JfreeChart提供的Servlet类DisplayChart,可以得到图像的相对路径,例如:
& lt%
string fileName = servlet utilities . sechartasjpeg(
ChartUtil.createChart(),450,300,session);
string graph URL = request . getcontextpath()+& # 34;/DisplayChart?文件名= & # 34;+文件名;
% & gt
上面的代码生成一张宽度为450,高度为300的图片,文件名为fileName,路径为graphURL,通过它可以访问生成的图片。
二、第一个图表案例
第一步:建立项目,引入jar包(jar包已经提供)。项目结构如下:
步骤2:创建一个自定义绘图工具类ChartUtil。
公共类ChartUtil {
/**
*创建一个数据集
* @return CategoryDataset对象
*/
public static category dataset create dataset(){
//实例化DefaultCategoryDataset对象
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
//向数据集合中添加数据
dataSet.addValue(550,& # 34;JaEE & # 34, "Ja EE类& # 34;);
dataSet.addValue(100,& # 34;JaSE & # 34, "Ja SE class & # 34);
dataSet.addValue(950,& # 34;Ja项目& # 34;, "Ja项目类& # 34;);
返回数据集;
}
/**
*创建一个JFreeChart对象
* @return JFreeChart对象
*/
公共静态JFreeChart createChart() {
//创建主题样式
StandardChartTheme StandardChartTheme = new StandardChartTheme(& # 34;CN & # 34);
//设置标题字体
standardcharttheme . setextralargefont(新字体(& # 34;隶书& # 34;,字体。粗体,20));
//设置图例的字体。
standardcharttheme . set regular Font(新字体(& # 34;微软雅黑& # 34;,字体。平原,15));
//设置轴向的字体。
standardcharttheme . setlargefont(新字体(& # 34;微软雅黑& # 34;,字体。平原,15));
chart factory . setchartheme(standardChartTheme);//设置主题样式
//通过ChartFactory创建JFreeChart。
JFreeChart chart = chart factory . createbarchart 3d(
"Ja书籍的销售统计& # 34;,//图表标题
"Ja书籍& # 34;,//水平轴标题
"销售量(本)& # 34;,//垂直轴标题
CreateDataSet(),//数据集
绘图方向。垂直,//图表方向
True,//是否显示图例标识?
True,//是否显示工具提示?
假);//支持超链接吗?
回报图表;
}
}
第三步:JfreeChart提供的Servlet类DisplayChart,带有注册的xml文件。
& lt?xml版本= & # 34;1.0"编码= & # 34;UTF-8 & # 34;?& gt
& ltweb-app版本= & # 34;2.5"
xmlns = & # 34http://ja.sun.com/xml/ns/jaee"
xmlns:xsi = & # 34;http://www.w3.org/2001/XMLSchema-instance"
xsi:schema location = & # 34;http://ja.sun.com/xml/ns/jaee
http://ja.sun.com/xml/ns/jaee/web-app_2_5.xsd"
& ltservlet & gt
& lt描述& gtJFreeChart & lt/description & gt;
& ltservlet-name & gt;显示图表& lt/servlet-name & gt;
& ltservlet-class & gt;org . jfree . chart . servlet . display chart & lt;/servlet-class & gt;
& lt/servlet & gt;
& ltservlet映射& gt
& ltservlet-name & gt;显示图表& lt/servlet-name & gt;
& lturl模式& gt/display chart & lt;/URL-pattern & gt;
& lt/servlet-mapping & gt;
& lt/we B- app & gt;
第四步:写index.jsp输出图。
& lt%@页面语言= & # 34;ja & # 34contentType = & # 34文本/html & # 34;pageEncoding = & # 34GBK & # 34;% & gt
& lt%@个页面导入= & # 34;org . jfree . chart . servlet . servlet utilities,com . test . chart util & # 34;% & gt
& lt!DOCTYPE HTML & gt
& lthtml & gt
& lthead & gt
& lttitle & gtJa书籍的销售统计
& lt/head & gt;
& ltbody & gt
& lt%
string fileName = servlet utilities . sechartasjpeg(chart util . create chart(),450,300,session);
string graph URL = request . getcontextpath()+& # 34;/DisplayChart?文件名= & # 34;+文件名;
% & gt
<img src="<%=graphURL%>" border="1">& ltimg src = & # 34& lt% = graphURL % & gt"border = & # 341"& gt
& lt/body & gt;
& lt/html & gt;
步骤5:部署运行输入,结果如下:
三、图表相关生肖设置
为了使生成的图表美观大方,需要设置绘图区域和坐标轴。
公共类ChartUtil {
/**
*创建一个数据集
* @return CategoryDataset对象
*/
public static category dataset create dataset(){
//实例化DefaultCategoryDataset对象
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
//添加第一季度数据
dataSet.addValue(6000,& # 34;第一节& # 34;, "Ja SE class & # 34);
dataSet.addValue(3000,& # 34;第一节& # 34;, "Ja ME class & # 34);
dataSet.addValue(12000,& # 34;第一节& # 34;, "Ja EE类& # 34;);
//添加第二季度的数据
dataSet.addValue(8000,& # 34;第二节& # 34;, "Ja SE class & # 34);
dataSet.addValue(4000,& # 34;第二节& # 34;, "Ja ME class & # 34);
dataSet.addValue(6000,& # 34;第二节& # 34;, "Ja EE类& # 34;);
//添加第三季度的数据
dataSet.addValue(5000,& # 34;第三节& # 34;, "Ja SE class & # 34);
dataSet.addValue(4000,& # 34;第三节& # 34;, "Ja ME class & # 34);
dataSet.addValue(8000,& # 34;第三节& # 34;, "Ja EE类& # 34;);
//添加第四季度数据
dataSet.addValue(8000,& # 34;第四节& # 34;, "Ja SE class & # 34);
dataSet.addValue(2000年,& # 34;第四节& # 34;, "Ja ME class & # 34);
dataSet.addValue(9000,& # 34;第四节& # 34;, "Ja EE类& # 34;);
返回数据集;
}
/**
*创建一个JFreeChart对象
* @return JFreeChart对象
*/
公共静态JFreeChart createChart() {
//通过ChartFactory创建JFreeChart。
JFreeChart chart = chart factory . createbarchart 3d(
"Ja书籍的销售统计& # 34;,//图表标题
"Ja书籍& # 34;,//水平轴标题
"销售量(本)& # 34;,//垂直轴标题
CreateDataSet(),//数据集
绘图方向。垂直,//图表方向
True,//是否显示图例标识?
True,//是否显示工具提示?
假);//支持超链接吗?
//背景图片
Image image = null
尝试{
//创建背景图片
image = imageio . read(chart util . class . get resource(& # 34;test.jpg & # 34));
} catch (IOException e) {
e . printstacktrace();
}
//设置标题字体
chart.getTitle()。setFont(新字体(& # 34;隶书& # 34;,字体。粗体,25));
//设置图例类别字体
chart.getLegend()。setItemFont(新字体(& # 34;微软雅黑& # 34;,字体。平原,12));
chart . setbordervisible(true);//设置显示边框
//实例化TextTitle对象
text title subTitle = new text title(& # 34;2012年Ja书籍全国销量统计(Ja SE,Ja ME,Ja EE)& # 34;);
//设置中心显示
subtitle . setvertical alignment(vertical alignment。底部);
chart.addSubtitle(字幕);//添加字幕
//获取绘图区域对象
category plot plot = chart . getcategory plot();
plot . setforeground alpha(0.8F);//设置绘图区域前景色的透明度。
plot . set background alpha(0.5F);//设置绘图区域背景色的透明度。
plot . set background image(image);//设置绘图区域的背景图片
//获取轴对象
category axis category axis = plot . getdomainaxis();
//设置轴标题字体
categoryAxis.setLabelFont(新字体(& # 34;微软雅黑& # 34;,字体。平原,12));
//设置轴刻度值的字体。
categoryAxis.setTickLabelFont(新字体(& # 34;微软雅黑& # 34;,字体。平原,12));
//设置轴标题的旋转角度。
categoryaxis . setcategorylabellations(categorylabellations。UP _ 45);
//获取数据轴对象
value axis value axis = plot . getrangeaxis();
//设置数据轴字体
valueAxis.setLabelFont(新字体(& # 34;微软雅黑& # 34;,字体。平原,12));
//获取图片渲染对象
barrender 3d renderer = new barrender 3d();
renderer . setitemargin(0.32);//设置列间距。
plot.setRenderer(渲染器);//设置图像渲染对象
回报图表;
}
}
“大数据与人工智能交流”的目的
1.把概率统计、线性代数、决策论、最优化理论、博弈论等大数据、人工智能的数学模型变得通俗易懂。
2.让大数据和人工智能涉及的数据结构和算法:分类、聚类、回归算法、概率等算法通俗易懂。
3.最新高科技趋势:数据采集中的智能传感器技术:医疗大数据智能决策分析;物联网,智慧城市等等。
根据初学者的需求,会有C语言、Ja语言、Python语言、Scala函数等主流计算机语言。
根据读者需求,有计算机科学与技术、电子技术、芯片技术等与人工智能相关的基础学科的通俗易懂的文章。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。