如题:生成的K线图代码:Kline.jsp
<!---->
<%@ page language="java" contentType="image/png;charset=GB2312"
import="java.awt.*"
import="java.text.*"
import="java.util.*"
import="org.jfree.chart.*"
import="org.jfree.chart.axis.*"
import="org.jfree.chart.servlet.*"
import="org.jfree.chart.plot.*"
import="org.jfree.chart.renderer.*"
import="org.jfree.chart.renderer.category.*"
import="org.jfree.chart.axis.*"
import="org.jfree.chart.entity.*"
import="org.jfree.chart.labels.*"
import="org.jfree.chart.title.*"
import="org.jfree.chart.urls.*"
import="org.jfree.chart.renderer.xy.*"
import="org.jfree.chart.annotations.*"
import="org.jfree.data.*"
import="org.jfree.date.DateUtilities"
import="org.jfree.data.xy.*"
import="org.jfree.data.time.*"
import="org.jfree.data.category.*"
import="org.jfree.date.SerialDate"
import="org.jfree.ui.*"
import="org.jfree.util.*"
import="java.sql.Connection"
import="java.sql.DriverManager"
import="java.sql.Statement"
import="java.sql.ResultSet"
import="org.jfree.data.time.ohlc.OHLCSeries"
import="org.jfree.data.time.ohlc.OHLCSeriesCollection"
%>
<%!
public JFreeChart createChart(OHLCDataset dataset)
{
// 创建图表对象
JFreeChart chart = ChartFactory.createCandlestickChart
(
"X邮票K线图",
"2007年8月",
"邮票价格(元/张)",
dataset,
false
);
return chart;
}
%>
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dvcs517";//mis是数据库名称
String user="sa";//用户名
String password="13391220222";//用户密码
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from kline order by id";//查询数据库
ResultSet rs=stmt.executeQuery(sql);
TimeSeries timeseries = new TimeSeries("日线图",Day.class);
final OHLCSeriesCollection seriesCollection = new OHLCSeriesCollection();//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
while(rs.next())
{
float y0=rs.getFloat("open_value");
float y1=rs.getFloat("max_value");
float y2=rs.getFloat("min_value");
float y3=rs.getFloat("close_value");
float y4=rs.getFloat("volume_value");
String s=rs.getString("stock_date");
int x=Integer.parseInt(s.substring(0,4));
int y=Integer.parseInt(s.substring(5,7));
int z=Integer.parseInt(s.substring(8,10));
OHLCSeries series = new OHLCSeries("");//高开低收数据序列,股票K线图的四个数据,依次是开,高,低,收
series.add(new Day(z,y,x),y0,y1,y2,y3);//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到
seriesCollection.addSeries(series);
}
JFreeChart chart = createChart(seriesCollection);
chart.setBackgroundPaint(Color.white);//设置背景色
XYPlot plot = (XYPlot) chart.getPlot();
final CandlestickRenderer candlestickRender=new CandlestickRenderer();//设置K线图的画图器,必须申明为final,后面要在匿名内部类里面用到
candlestickRender.setUseOutlinePaint(true); //设置是否使用自定义的边框线,程序自带的边框线的颜色不符合中国股票市场的习惯
candlestickRender.setAutoWidthMethod(CandlestickRenderer.WIDTHMETHOD_AVERAGE);//设置如何对K线图的宽度进行设定
candlestickRender.setAutoWidthGap(0.001);//设置各个K线图之间的间隔
candlestickRender.setUpPaint(Color.RED);//设置股票上涨的K线图颜色
candlestickRender.setDownPaint(Color.GREEN);//设置股票下跌的K线图颜色
plot.setRenderer(candlestickRender);
DateAxis domainAxis = (DateAxis)plot.getDomainAxis();
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");//设置显示日期格式
DateTickUnit unit = new DateTickUnit(DateTickUnit.DAY, 5, df);
domainAxis.setTickUnit(unit);
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" border="0" usemap="#<%= filename %>"> </BODY>
</HTML>生成的均线图代码:K.jsp
<!---->
<HEAD>
</HEAD>
<BODY>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dvcs517";//mis是数据库名称
String user="sa";//用户名
String password="13391220222";//用户密码
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from kline order by id";//查询数据库
ResultSet rs=stmt.executeQuery(sql);
TimeSeries timeseries = new TimeSeries("日线图",Day.class);
final OHLCSeriesCollection seriesCollection = new OHLCSeriesCollection();//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到
while(rs.next())
{
float y0=rs.getFloat("open_value");
float y1=rs.getFloat("max_value");
float y2=rs.getFloat("min_value");
float y3=rs.getFloat("close_value");
float y4=rs.getFloat("volume_value");
String s=rs.getString("stock_date");
int x=Integer.parseInt(s.substring(0,4));
int y=Integer.parseInt(s.substring(5,7));
int z=Integer.parseInt(s.substring(8,10));
timeseries.add(new Day(z,y,x),y3);
OHLCSeries series = new OHLCSeries("");//高开低收数据序列,股票K线图的四个数据,依次是开,高,低,收
series.add(new Day(z,y,x),y0,y1,y2,y3);//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到
seriesCollection.addSeries(series);
}
TimeSeriesCollection dataset = new TimeSeriesCollection();
// 创建移动平均线数据集对象
TimeSeries mav1 = MovingAverage.createMovingAverage
(
timeseries, "20日均线", 20, 20
);
TimeSeries mav2 = MovingAverage.createMovingAverage
(
timeseries, "10日均线", 10, 10
);
TimeSeries mav3 = MovingAverage.createMovingAverage
(
timeseries, "5日均线", 5, 5
);
dataset.addSeries(timeseries);
dataset.addSeries(mav1);
dataset.addSeries(mav2);
dataset.addSeries(mav3);
XYDataset xydataset = (XYDataset) dataset;
JFreeChart chart = ChartFactory.createTimeSeriesChart
(
"X邮票走势图",
"时间",
"价格(元/张)",
xydataset,
true,
true,
true
);
chart.setBackgroundPaint(Color.white);//设置曲线图背景色
XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
plot.setBackgroundPaint(Color.white);//设置网格背景颜色
plot.setDomainGridlinePaint(Color.pink);//设置网格竖线颜色
plot.setRangeGridlinePaint(Color.pink);//设置网格横线颜色
xylineandshaperenderer.setBaseShapesVisible(false);//设置曲线是否显示数据点
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" border="0" usemap="#<%= filename %>"> </BODY>
</HTML>怎么把K线图和均线图放在一起显示????????????????????
<!---->
<%@ page language="java" contentType="image/png;charset=GB2312"
import="java.awt.*"
import="java.text.*"
import="java.util.*"
import="org.jfree.chart.*"
import="org.jfree.chart.axis.*"
import="org.jfree.chart.servlet.*"
import="org.jfree.chart.plot.*"
import="org.jfree.chart.renderer.*"
import="org.jfree.chart.renderer.category.*"
import="org.jfree.chart.axis.*"
import="org.jfree.chart.entity.*"
import="org.jfree.chart.labels.*"
import="org.jfree.chart.title.*"
import="org.jfree.chart.urls.*"
import="org.jfree.chart.renderer.xy.*"
import="org.jfree.chart.annotations.*"
import="org.jfree.data.*"
import="org.jfree.date.DateUtilities"
import="org.jfree.data.xy.*"
import="org.jfree.data.time.*"
import="org.jfree.data.category.*"
import="org.jfree.date.SerialDate"
import="org.jfree.ui.*"
import="org.jfree.util.*"
import="java.sql.Connection"
import="java.sql.DriverManager"
import="java.sql.Statement"
import="java.sql.ResultSet"
import="org.jfree.data.time.ohlc.OHLCSeries"
import="org.jfree.data.time.ohlc.OHLCSeriesCollection"
%>
<%!
public JFreeChart createChart(OHLCDataset dataset)
{
// 创建图表对象
JFreeChart chart = ChartFactory.createCandlestickChart
(
"X邮票K线图",
"2007年8月",
"邮票价格(元/张)",
dataset,
false
);
return chart;
}
%>
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dvcs517";//mis是数据库名称
String user="sa";//用户名
String password="13391220222";//用户密码
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from kline order by id";//查询数据库
ResultSet rs=stmt.executeQuery(sql);
TimeSeries timeseries = new TimeSeries("日线图",Day.class);
final OHLCSeriesCollection seriesCollection = new OHLCSeriesCollection();//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
while(rs.next())
{
float y0=rs.getFloat("open_value");
float y1=rs.getFloat("max_value");
float y2=rs.getFloat("min_value");
float y3=rs.getFloat("close_value");
float y4=rs.getFloat("volume_value");
String s=rs.getString("stock_date");
int x=Integer.parseInt(s.substring(0,4));
int y=Integer.parseInt(s.substring(5,7));
int z=Integer.parseInt(s.substring(8,10));
OHLCSeries series = new OHLCSeries("");//高开低收数据序列,股票K线图的四个数据,依次是开,高,低,收
series.add(new Day(z,y,x),y0,y1,y2,y3);//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到
seriesCollection.addSeries(series);
}
JFreeChart chart = createChart(seriesCollection);
chart.setBackgroundPaint(Color.white);//设置背景色
XYPlot plot = (XYPlot) chart.getPlot();
final CandlestickRenderer candlestickRender=new CandlestickRenderer();//设置K线图的画图器,必须申明为final,后面要在匿名内部类里面用到
candlestickRender.setUseOutlinePaint(true); //设置是否使用自定义的边框线,程序自带的边框线的颜色不符合中国股票市场的习惯
candlestickRender.setAutoWidthMethod(CandlestickRenderer.WIDTHMETHOD_AVERAGE);//设置如何对K线图的宽度进行设定
candlestickRender.setAutoWidthGap(0.001);//设置各个K线图之间的间隔
candlestickRender.setUpPaint(Color.RED);//设置股票上涨的K线图颜色
candlestickRender.setDownPaint(Color.GREEN);//设置股票下跌的K线图颜色
plot.setRenderer(candlestickRender);
DateAxis domainAxis = (DateAxis)plot.getDomainAxis();
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");//设置显示日期格式
DateTickUnit unit = new DateTickUnit(DateTickUnit.DAY, 5, df);
domainAxis.setTickUnit(unit);
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" border="0" usemap="#<%= filename %>"> </BODY>
</HTML>生成的均线图代码:K.jsp
<!---->
<HEAD>
</HEAD>
<BODY>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dvcs517";//mis是数据库名称
String user="sa";//用户名
String password="13391220222";//用户密码
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from kline order by id";//查询数据库
ResultSet rs=stmt.executeQuery(sql);
TimeSeries timeseries = new TimeSeries("日线图",Day.class);
final OHLCSeriesCollection seriesCollection = new OHLCSeriesCollection();//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到
while(rs.next())
{
float y0=rs.getFloat("open_value");
float y1=rs.getFloat("max_value");
float y2=rs.getFloat("min_value");
float y3=rs.getFloat("close_value");
float y4=rs.getFloat("volume_value");
String s=rs.getString("stock_date");
int x=Integer.parseInt(s.substring(0,4));
int y=Integer.parseInt(s.substring(5,7));
int z=Integer.parseInt(s.substring(8,10));
timeseries.add(new Day(z,y,x),y3);
OHLCSeries series = new OHLCSeries("");//高开低收数据序列,股票K线图的四个数据,依次是开,高,低,收
series.add(new Day(z,y,x),y0,y1,y2,y3);//保留K线数据的数据集,必须申明为final,后面要在匿名内部类里面用到
seriesCollection.addSeries(series);
}
TimeSeriesCollection dataset = new TimeSeriesCollection();
// 创建移动平均线数据集对象
TimeSeries mav1 = MovingAverage.createMovingAverage
(
timeseries, "20日均线", 20, 20
);
TimeSeries mav2 = MovingAverage.createMovingAverage
(
timeseries, "10日均线", 10, 10
);
TimeSeries mav3 = MovingAverage.createMovingAverage
(
timeseries, "5日均线", 5, 5
);
dataset.addSeries(timeseries);
dataset.addSeries(mav1);
dataset.addSeries(mav2);
dataset.addSeries(mav3);
XYDataset xydataset = (XYDataset) dataset;
JFreeChart chart = ChartFactory.createTimeSeriesChart
(
"X邮票走势图",
"时间",
"价格(元/张)",
xydataset,
true,
true,
true
);
chart.setBackgroundPaint(Color.white);//设置曲线图背景色
XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
plot.setBackgroundPaint(Color.white);//设置网格背景颜色
plot.setDomainGridlinePaint(Color.pink);//设置网格竖线颜色
plot.setRangeGridlinePaint(Color.pink);//设置网格横线颜色
xylineandshaperenderer.setBaseShapesVisible(false);//设置曲线是否显示数据点
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" border="0" usemap="#<%= filename %>"> </BODY>
</HTML>怎么把K线图和均线图放在一起显示????????????????????
一个是:数据库操作文件,比如你连接数据,查询的SQL语句,直接返回一个ResultSet(建议不要直接返回ResultSet的对象,可以返回一个List,或者Iterator)。 然后在第二个源文件中去遍历。二个是:由于你的Kline.jsp和K.jsp中的代码有所不同,你可以将他们分别写入对应的.java文件。
将Kline.jsp内容复制到Kline.java中
将K.jsp内容复制到K.java中记住一点 在.java文件中创建图形的方法必须要有HttpSession session, PrintWriter pw这2个参数。后面在说
看红色表示的
public String createTimeSeriesChart(HttpSession session, PrintWriter pw) throws SQLException
{
.....................................
}
Kline.jsp:
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
K.jsp
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);三个是: 建一个.jsp页面 加入代码如下
<div id="jiange">
<%
Kline line=new Kline();
String filename1 = line.createTimeSeriesChart(session,new PrintWriter(out));
String graphURL1 = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename1;
%>
<img src="<%=graphURL1%>" border=1 usemap="#<%=filename1%>"><br><br>
<%
K k=new K();
String filename = k.getPieChart(session,new PrintWriter(out));
String graphPieplotURL = request.getContextPath()+ "/servlet/DisplayChart?filename=" + filename;
%>
<img src="<%=graphPieplotURL%>" border=0 usemap="#map0">
</div>
以上是我以前做项目。 一个页面显示2个图,一个曲线图,一个饼图。只提供了思路,具体的方法还要自己去实现。。