导航:首页 > 编程语言 > jfreechartjava

jfreechartjava

发布时间:2023-05-16 11:07:57

A. java如何将数据库中的数据统计后用jfreechart显示出来(要具体代码)

其实挺简单的,注意我写的注释!
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="org.jfree.chart.JFreeChart,org.jfree.chart.ChartUtilities,
org.jfree.chart.ChartFactory,
org.jfree.chart.plot.PlotOrientation,
org.jfree.data.category.DefaultCategoryDataset"%> //上橘雹面是需要添加的头文件
<html>
<body>
<%
String dataName[]=new String[]{"0-30岁","30-50岁","50-70岁","70岁以上"};//显示数据系列
int dataValueCount[]={4,5,4,6};//数据系列对应的值
//以上两行可以从数据库里去取值,用循环写入数组
//------创建数据中伍粗集,并设置值------
DefaultCategoryDataset categoryDataset = newDefaultCategoryDataset();//这个表示柱状图
for(int i=0;i<dataName.length;i++)
categoryDataset.addValue(dataValueCount[i],dataName[i],dataName[i]);//循环写入数据集
String titleString="用户年龄阶段分布统计图";//图的标题
JFreeChart chart = ChartFactory.createBarChart(titleString,"用户年龄阶段","数量",
categoryDataset,PlotOrientation.VERTICAL,true,true,false);//chart就是欲创建的图表
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,500,300);//这行的意思是输出成一个JPEG形式的文件显示
%>
</body>
</html>

其实后面还有很多参数的,比如颜色,柱子的标题等等,太多属性了,这个你查看一下JFREECHART的文档就行了,比如下面这样,很容易吧。
Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);
/*
* VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭,
* 使用的关闭抗锯齿后,字体尽量选择12到14号的宋体字,这样文字最清晰好看
*/
// chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
chart.setTextAntiAlias(false);
chart.setBackgroundPaint(Color.white);
// create plot
CategoryPlot plot = chart.getCategoryPlot();
/卖镇/ 设置横虚线可见
plot.setRangeGridlinesVisible(true);
// 虚线色彩
plot.setRangeGridlinePaint(Color.gray);

// 数据轴精度
NumberAxis vn = (NumberAxis) plot.getRangeAxis();
// vn.setAutoRangeIncludesZero(true);
DecimalFormat df = new DecimalFormat("#0.00");
vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式
// x轴设置
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(labelFont);// 轴标题
domainAxis.setTickLabelFont(labelFont);// 轴数值

属性比较多,不可能全贴出来,也不必全用,设置一些实用的属性即可。

B. java jfreechart

在最的一行加老竖个 <%}%> 就行了呗。

-------------------------------------
<%@ page contentType="text/html;charset=GBK"%>
<%@ page
import="org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.category.CategoryDataset,
org.jfree.data.general.DatasetUtilities,
org.jfree.chart.plot.*,
org.jfree.chart.labels.*,
org.jfree.chart.renderer.category.BarRenderer3D,
java.awt.*, org.jfree.ui.*,
org.jfree.chart.axis.AxisLocation"%>
<%@ page import="java.sql.*"%>
<%
//连接数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jfree";
String usr="sa";
String pwd="";
Connection conn=DriverManager.getConnection(url,usr,pwd);
Statement stmt=conn.createStatement();
String sql="select * from jfree order by id";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
int a = rs.getInt("a");
int b = rs.getInt("b");
int c = rs.getInt("c");
int d = rs.getInt("州蔽d");
String e = rs.getString("e");
String f = rs.getString("f");
double[][] data = new double[][] {{a, b, c, d}, {a, b, c, d}, {a, b, c, d}, {a, b, c, d}};
String[] rowKeys = {f, f,f, f};
String[] columnKeys = {e, e, e, e};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("城市选择", "城市", "选择", dataset, PlotOrientation.VERTICAL, true, true, false);
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.white); //设置网格背景颜色
plot.setDomainGridlinePaint(Color.pink);//设置网格竖线颜色
plot.setRangeGridlinePaint(Color.pink); //设置网格横线颜色
BarRenderer3D renderer = new BarRenderer3D(); //显示每个柱的数值,并修改该数值的字册含州体属性
renderer.setBaseItemLabelGenerator(new ()); //默认的数字显示在柱子中,通过如下两句可调整数字的显示
renderer.setBaseItemLabelsVisible(true); //注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
renderer.setItemLabelAnchorOffset(10D); //设置每个地区所包含的平行柱的之间距离 //
renderer.setItemMargin(0.3); plot.setRenderer(renderer); //设置地区、销量的显示位置 //将下方的“肉类”放到上方
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT); //将默认放在左边的“销量”放到右方
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
String filename = ServletUtilities.saveChartAsPNG(chart, 700, 400, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;

%>
<img src="<%=graphURL %>" width=700 height=400 border=0
usemap="#<%= filename %>">
<%}%>

C. 小白求教,java项目中能不能用jfreechart,不是java web项目

JFreeChart是完全基源早于Java语言的开源项目,因此可以在java开发环境中使用,包括java应雹姿雀用程序,或者是java web应用都没有任何问册棚题。

D. JAVA用Jfreechart 画图,我设置了显示的,怎么显不出来,求解

需要脊桥设置font
// 创建主题样式
StandardChartTheme mChartTheme = new StandardChartTheme("CN");
/世野缓/ 设置标题字体
mChartTheme.setExtraLargeFont(new Font("黑体", Font.BOLD, 20));
// 设置轴搜模向字体
mChartTheme.setLargeFont(new Font("宋体", Font.CENTER_BASELINE, 15));
// 设置图例字体
mChartTheme.setRegularFont(new Font("宋体", Font.CENTER_BASELINE, 15));
// 应用主题样式
ChartFactory.setChartTheme(mChartTheme);

E. java中 jfreechart 如何从数据库中读取数据,显示的时候作为一个动态的曲线图展示出来,这个要如何实现

jfreechart有获取后台的数据源属旦郑性,你后台将数据查询出来就可以了。关于曲线图的和迟腔生成jfreechart肯定有自动封装的!调唤衫用就可以。

F. java JFreeChart 问题,X轴显示的是时间,但是数据太多,挤成一团,如何让X轴只显示10个时间

调整前(默认1年单位)

importjava.io.File;
importjava.io.IOException;
importjava.text.SimpleDateFormat;

importorg.jfree.chart.ChartFactory;
importorg.jfree.chart.ChartUtilities;
importorg.jfree.chart.JFreeChart;
importorg.jfree.chart.axis.DateAxis;
importorg.jfree.chart.axis.DateTickUnit;
importorg.jfree.chart.plot.XYPlot;
importorg.jfree.data.time.Month;
importorg.jfree.data.time.TimeSeries;
importorg.jfree.data.time.TimeSeriesCollection;

{

publicstaticvoidmain(String[]args)throwsIOException{
//CreateData
TimeSeriess1=newTimeSeries("XXXX");
for(inti=0;i<10;i++){
intyear=2000+i;
s1.add(newMonth(1,year),101.8);
s1.add(newMonth(2,year),104.8);
s1.add(newMonth(3,year),103.3);
s1.add(newMonth(4,year),105.8);
s1.add(newMonth(5,year),110.6);
s1.add(newMonth(6,year),120.8);
s1.add(newMonth(7,year),115.3);
s1.add(newMonth(8,year),130.9);
s1.add(newMonth(9,year),131.7);
s1.add(newMonth(10,year),140.2);
s1.add(newMonth(11,year),141.8);
s1.add(newMonth(12,year),160.6);
}

TimeSeriesCollectiondataset=newTimeSeriesCollection();
闭让轿dataset.addSeries(s1);

//CreateJFreeChart
JFreeChartchart=ChartFactory.createTimeSeriesChart("TITLE","TIMEAXISLABEL",
"VALUEAXISLABEL",dataset,true,true,false);

//这里是关键
XYPlotxyplot=(XYPlot)chart.getPlot();
DateAxisdomainAxis=(DateAxis)xyplot.getDomainAxis();//x轴设置
domainAxis.setTickUnit(newDateTickUnit(DateTickUnit.YEAR,5,newSimpleDateFormat("yyyy")));

//Output
FileoutputFile=newFile("SampleTimeSeriesChart.png");
ChartUtilities.saveChartAsPNG(outputFile,chart,500,500);
}
}

推荐这里,Jfreechart大全:

http://my.oschina.net/abian/blog/278465

G. JAVA如何将JFreeChart图片导出到Excel

我才做了这个,你看看行不行,我是把生成的图片放到一个临时文件中,然后再用poi将这个图片导入到excel中,代码如下:
package jfreechart;

import java.awt.Font;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class testBarChart2 extends ActionSupport{
JFreeChart chart;
HttpSession session;
HttpServletRequest request;

@Override
public String execute() throws Exception {
request=ServletActionContext.getRequest();
session=request.getSession();

DefaultCategoryDataset dataset=new DefaultCategoryDataset();
dataset.addValue(1000,"广州","猪肉");
dataset.addValue(220,"广州","牛肉");
dataset.addValue(530,"广州","鸡肉");
dataset.addValue(340,"广州","鱼肉");

chart=ChartFactory.createBarChart3D("肉类销量统计图","肉类","销量",dataset,PlotOrientation.VERTICAL,false,false,false);

Font font=new Font("宋体",Font.BOLD,20);
CategoryPlot plot=(CategoryPlot)chart.getPlot();
TextTitle textTitle=chart.getTitle();
textTitle.setFont(font);//设置标题的字体
CategoryAxis domainAxis=plot.getDomainAxis();//柱状图的x轴
domainAxis.setTickLabelFont(font);//设置x轴坐标上的字体
domainAxis.setLabelFont(font);//设置x轴上的标题的字体
ValueAxis valueAxis=plot.getRangeAxis();//柱状图的y轴
valueAxis.setTickLabelFont(font);//设置y轴坐标上的字体
valueAxis.setLabelFont(font);//设置y轴坐标上的标题的字体

/**添加上下面的语句会在临时文件夹下面生成图片,去掉就不会有了*/
String filename="E:/tomcat/basicsms/apache-tomcat-6.0.18/temp/"+ServletUtilities.saveChartAsPNG(chart,500,300,null,session);

FileOutputStream fileOut = null;
BufferedImage bufferImg = null;

try {

// 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();

bufferImg = ImageIO.read(new File(filename));
ImageIO.write(bufferImg, "png", byteArrayOut);

// 创建一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("new sheet");
HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 512, 255,
(short) 1, 1, (short) 10, 20);

anchor.setAnchorType(2);
// 插入图片
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut
.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)).resize(0.8);

fileOut = new FileOutputStream("d:/workbook.xls");
// 写入excel文件
wb.write(fileOut);
fileOut.close();

} catch (IOException io) {
io.printStackTrace();
System.out.println("io erorr : " + io.getMessage());
} finally {
if (fileOut != null) {
try {
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

return SUCCESS;
}

public JFreeChart getChart() {
return chart;
}
}
当执行action的时候,图片会在页面显示,也会导入到workbook.xls中,这个例子其实是我在网上找的,然后拼写成的,希望对你有帮助,我目前也在研究当中,也可以共同讨论
其实你要也可以试试jacob,它可以直接在excel中生成图片,你可以自己研究研究

H. 用java写有关JFreeChart乱码的问题

试试把你工程中用到的文件的编码方式都改成utf-8

I. java中使用jfreechart做柱状图,在jsp中显示有问题,

jfreechart中显示柱状图到jsp页面:
package com.test.jfreechart;

import java.awt.Font;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;

public class JFreeChartTest2 extends ApplicationFrame
{
public JFreeChartTest2(String title)
{
super(title);
this.setContentPane(createPanel()); //构造函数中自动创建Java的panel面板
}

public static CategoryDataset createDataset() //创建滑旁柱状图数据集
{
DefaultCategoryDataset dataset=new DefaultCategoryDataset();
dataset.setValue(10,"a","管理人员");
dataset.setValue(20,"b","市场人员");
dataset.setValue(40,"c","开发人员");
dataset.setValue(15,"d","其他人员");
return dataset;
}

public static JFreeChart createChart(CategoryDataset dataset) //用数据集创建一个图表
{
JFreeChart chart=ChartFactory.createBarChart("hi", "人员分布",
"人卜乱员数量", dataset, PlotOrientation.VERTICAL, true, true, false); //创建一个JFreeChart
chart.setTitle(new TextTitle("某公司组织结信弊橡构图",new Font("宋体",Font.BOLD+Font.ITALIC,20)));//可以重新设置标题,替换“hi”标题
CategoryPlot plot=(CategoryPlot)chart.getPlot();//获得图标中间部分,即plot
CategoryAxis categoryAxis=plot.getDomainAxis();//获得横坐标
categoryAxis.setLabelFont(new Font("微软雅黑",Font.BOLD,12));//设置横坐标字体
return chart;
}

public static JPanel createPanel()
{
JFreeChart chart =createChart(createDataset());
return new ChartPanel(chart); //将chart对象放入Panel面板中去,ChartPanel类已继承Jpanel
}

public static void main(String[] args)
{
JFreeChartTest2 chart=new JFreeChartTest2("某公司组织结构图");
chart.pack();//以合适的大小显示
chart.setVisible(true);

}
}
运行结果:

J. Java开发jfreechart的折线图时,想要实现鼠标移向每个折点时只显示Y轴对应的数值,应该怎么做

jfreechart只能产生静态图表,鼠标移上去显示的数值,实际上是靠html 的map来实现的,因此那个矩形框前顷桥是浏览慧猛器显示的,与代码无关,所以也改不了乎空的。
至于只显示Y轴的值,请从chart得到plot,然后再从plot得到renderer,再自定义renderer的ToolTipGenerator,从而实现自定义的tooltip.

如果想要更动态的图表,可以使用flash图表,如fusioncharts

阅读全文

与jfreechartjava相关的资料

热点内容
安卓手机微信发不出视频怎么弄 浏览:229
压缩机专用工具 浏览:575
qtcreator可以编译cp吗 浏览:405
小项目是云服务器还是本地好 浏览:14
墨痕斋是什么游戏的服务器 浏览:942
word文件如何压缩大小 浏览:279
遵义联通服务器地址是什么 浏览:29
ansys约束命令流 浏览:814
解压软件电脑版如何下载 浏览:791
闪电匕首算法球 浏览:692
linuxredis停止命令 浏览:670
大麦账号怎么加密 浏览:113
穿越火线怎么找服务器 浏览:526
秘密加密社交软件app 浏览:256
c语言编译器怎么找文件 浏览:835
数学不好能编程吗 浏览:254
微云里的视频加密 浏览:41
3大加密货币交易平台 浏览:647
钣金激光切割机编程 浏览:496
vivo手机手电筒app在哪里 浏览:787