導航:首頁 > 編程語言 > 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相關的資料

熱點內容
遵義聯通伺服器地址是什麼 瀏覽:29
ansys約束命令流 瀏覽:814
解壓軟體電腦版如何下載 瀏覽:791
閃電匕首演算法球 瀏覽:692
linuxredis停止命令 瀏覽:670
大麥賬號怎麼加密 瀏覽:113
穿越火線怎麼找伺服器 瀏覽:526
秘密加密社交軟體app 瀏覽:256
c語言編譯器怎麼找文件 瀏覽:835
數學不好能編程嗎 瀏覽:254
微雲里的視頻加密 瀏覽:41
3大加密貨幣交易平台 瀏覽:647
鈑金激光切割機編程 瀏覽:496
vivo手機手電筒app在哪裡 瀏覽:787
單片機晶振電路電容 瀏覽:887
穿越火線河南一區伺服器雲主機 瀏覽:41
文件夾與快捷方式顯示一致 瀏覽:879
幻影伺服器怎麼看金錢 瀏覽:349
小米手機怎麼用app減肥 瀏覽:893
本機如何與雲伺服器互通 瀏覽:652