怎么从数据库中调出数据并生成动态图表

怎么从数据库中调出数据并生成动态图表,第1张

JSP页面中嵌入动态图表的两种方法 :在JSP页面中插入Applet小程序 ;通过JavaBean动态生成图像。

JSP是一种广泛应用的网页设计技术 ,它是一种HTML和Java脚本混合的编程技术 ,它结合了HTML的静态特性和Java语言的动态能力 ,因此用它进行动态网页设计非常方便。在进行图像处理时 ,一般处理静态非常容易 ,但是 ,在实际应用中常常需要动态地在网页中生成二维的图形

基于JFreeChart开发的一个时序图的绘制。代码如下:

实例中createDataset()方法用于创建数据集合对象。时序图的数据集合与其他数据集合不同,它需要添加一个时间段内的所有数据,通常采用TimeSeries类进行添加。该实例中通过Math类的random()方法进行随机生成。

import javaawt;

import javaawteventActionEvent;

import

javaawteventActionListener;

import javaioBufferedInputStream;

import

javaioDataInputStream;

import javaioFileOutputStream;

import

javaioIOException;

import javanetURL;

import

javanetURLConnection;

import javatextDateFormat;

import

javatextParseException;

import javatextSimpleDateFormat;

import

javautilCalendar;

import javautilDate;

import javautilRandom;

import javaxswingJApplet;

import javaxswingTimer;

import orgjfreechart;

import

orgjfreechartannotationsCategoryTextAnnotation;

import

orgjfreechartaxisCategoryAnchor;

import

orgjfreechartaxisCategoryAxis;

import

orgjfreechartaxisCategoryLabelPositions;

import

orgjfreechartaxisDateAxis;

import

orgjfreechartaxisDateTickUnit;

import

orgjfreechartaxisDateTickUnitType;

import

orgjfreechartaxisValueAxis;

import

orgjfreechartlabelsStandardCategoryItemLabelGenerator;

import

orgjfreechartplotCategoryPlot;

import

orgjfreechartplotPlotOrientation;

import

orgjfreechartplotXYPlot;

import

orgjfreechartrenderercategoryBarRenderer;

import

orgjfreecharttitleTextTitle;

import

orgjfreedatacategoryCategoryDataset;

import

orgjfreedatacategoryIntervalCategoryDataset;

import orgjfreechartaxisNumberAxis;

import

orgjfreedatacategoryDefaultCategoryDataset;

import

orgjfreedataganttTask;

import orgjfreedataganttTaskSeries;

import

orgjfreedataganttTaskSeriesCollection;

import

orgjfreedatatimeDay;

import orgjfreedatatimeSecond;

import

orgjfreedatatimeTimeSeries;

import

orgjfreedatatimeTimeSeriesCollection;

import

orgjfreedataxyXYDataset;

public class shixutu extends JApplet {

//PLOT_FONT是一静态的字体常量对象,使用此对象可以避免反复用到的字体对象被多次创建

private static final Font PLOT_FONT = new Font("黑体", FontITALIC ,

18);

JFreeChart chart;

//创建数据动态更新的监听

class DataGenerator extends Timer

implements ActionListener {

private static final long serialVersionUID =

3977867288743720504L;

String

equID;

//设备ID号

int

totalTask;

//任务数

String[][]

strTask;

//任务情况

public void

actionPerformed(ActionEvent actionevent) {

addTotalObservation();

} DataGenerator()

{

super(1000,

null);

addActionListener(this);

Systemoutprintln("super");

}

}

//将更新的数据添加到chart中

private void addTotalObservation()

{

Systemoutprintln("addTotalObservation");

//设置新的数据集

chartgetXYPlot()setDataset(createDataset());

//通知Jfreechart

数据发生了改变,重新绘制柱状图

if

(chart != null)

{

chartfireChartChanged();

}

}

private static void

processChart(JFreeChart chart)

{

//设置标题字体

chartgetTitle()setFont(new Font("隶书", FontBOLD,

26));

//设置背景色

chartsetBackgroundPaint(new

Color(252,175,134));

XYPlot plot = chartgetXYPlot();

//获取图表的绘制属性

plotsetDomainGridlinesVisible(false);

//设置网格不显示

//获取时间轴对象

DateAxis dateAxis = (DateAxis)

plotgetDomainAxis();

dateAxissetLabelFont(PLOT_FONT);

//设置时间轴字体

//设置时间轴标尺值字体

dateAxissetTickLabelFont(new

Font("宋体",FontPLAIN,12));

dateAxissetLowerMargin(00);

//设置时间轴上显示的最小值

//获取数据轴对象

ValueAxis valueAxis =

plotgetRangeAxis();

valueAxissetLabelFont(PLOT_FONT);

//设置数据字体

DateFormat format = new SimpleDateFormat("mm分ss秒");

//创建日期格式对象

//创建DateTickUnit对象

DateTickUnit dtu = new

DateTickUnit(DateTickUnitTypeSECOND,30,format);

dateAxissetTickUnit(dtu);

//设置日期轴的日期标签 } //将结果输出在文件中

private static

void writeChartAsImage(JFreeChart chart)

{

FileOutputStream fos_jpg =

null;

try

{

fos_jpg = new

FileOutputStream("D:\\test\\shixutujpg");

ChartUtilitieswriteChartAsJPEG(fos_jpg, 1, chart, 400, 300,

null);

} catch (Exception e)

{

eprintStackTrace();

} finally

{

try

{

fos_jpgclose();

} catch (Exception e)

{

}

}

}

//创建数据集合对象

public static XYDataset createDataset()

{

//实例化TimeSeries对象

TimeSeries timeseries = new

TimeSeries("Data");

Second second = new Second();

//实例化Day

double d =

50D;

//添加一年365天的数据

for (int i = 0; i < 500; i++)

{

d = d + (Mathrandom() - 05) 10;

//创建随机数据

timeseriessecond(day, d);

//向数据集合中添加数据

second = (Second)

secondnext();

}

TimeSeriesCollection timeSeriesCollection =

new

TimeSeriesCollection(timeseries);

//返回数据集合对象

return timeSeriesCollection; } //Applet程序初始化

public void init()

{

// 1

得到数据

XYDataset dataset =

createDataset();

// 2

构造chart

chart =

ChartFactorycreateTimeSeriesChart(

"时序图示范", //

图表标题

"时间", //

目录轴的显示标签--横轴

"数值", //

数值轴的显示标签--纵轴

dataset, //

数据集

false,

false, //

是否生成工具

false //

是否生成URL链接

);

// 3

处理chart中文显示问题

processChart(chart);

// 4

chart输出

//writeChartAsImage(chart);

// 5 chart

以swing形式输出

//6使用applet输出

ChartPanel chartPanel = new

ChartPanel(chart);

chartPanelsetPreferredSize(new

javaawtDimension(800,500));

getContentPane()add(chartPanel); (new

DataGenerator())start();

}

public void

paint(Graphics g)

{

if

(chart != null)

{

chartdraw((Graphics2D) g,

getBounds());

}

}

public void destroy() {

}

}

1如图所示,拖动鼠标选中要建立图标的数据。

2点击菜单栏上的:插入--柱形图,选择一种样式。

3在插入的图表上,先点击纵坐标轴选中它,可以看到这个坐标轴四周出现了四个小圆,也叫做控制点。

4右键单击这个坐标轴,然后选择设置坐标轴格式。

5在打开的坐标轴格式对话框中,看到坐标轴的最大值最小值等都是自动的,为了自己设定,必须先选中固定的,然后设定数值,如图所示。

6设置好刻度以后,点击数字选项,然后在类别下选择自定义,在各式代码这一栏输入 g/毫升 ,然后点击添加按钮。这个就是给数据添加一个单位的代码。点击关闭按钮。

7看到纵坐标轴已经添加了单位了。

在图表中的轴线窗口中调整。

1、点击图表,在d出的图表工具栏。

2、点击设计选项卡,点击水平轴。

3、在d出的水平轴窗口中,点击轴线选项卡。

4、在轴线窗口中,调整轴线宽度,调整后的宽度即为水平轴的宽度。

以上就是关于怎么从数据库中调出数据并生成动态图表全部的内容,包括:怎么从数据库中调出数据并生成动态图表、在excel中做图表后,X轴数值怎么调整、图表水平轴显示很窄怎么调整等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10128862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存