如何使用java做統(tǒng)計(jì)圖表
//參考地址http://echarts.baidu.com/去網(wǎng)站下js控件,下面是餅圖的代碼,下圖是我的代碼效果
functionquery1(houtype,redStatisticsList,text0,cashingSum,tranferSum){
<!--紅包發(fā)放數(shù)據(jù)-->
varmyrodiusred=echarts.init(document.getElementById('mainrodius'));//ID
varredHouhold=houtype;
varredMoney=redStatisticsList;
varallMoney=0;//總金額
$.each(redStatisticsList,function(index,item){
allMoney=allMoney+Number(item.value);
})
optionTwo={
title:{
text:text0,
subtext:"總金額:"+allMoney+"\n\n提現(xiàn)總額:"+cashingSum+"\n\n到賬總額:"+tranferSum,
x:'center'
},
tooltip:{
trigger:'item',
formatter:"{a}<br/>{b}({d}%)"
},
legend:{
orient:'vertical',
left:'left',
data:houtype
},
ries:[
{
type:'pie',
radius:'55%',
center:['50%','60%'],
data:redMoney,
itemStyle:{
emphasis:{
shadowBlur:10,
shadowOfftX:0,
shadowColor:'rgba(0,0,0,0.5)'
}
}
}
]
};
myrodiusred.tOption(optionTwo);
}
Java中如何讓使用Python的統(tǒng)計(jì)包繪圖
看來是同道。你提到的這個(gè)問題很難。
java調(diào)用python容易。 java甚至可以直接調(diào)用python的類。python調(diào)用java更容易了。
不過GUI要想融合,據(jù)目前20年的技術(shù)來看,只有本土的可以。 比如以前的微軟件ActiveX,不管你是什么語言開發(fā)的都可以在windows下用OLE方式嵌入。
java的制圖功能,因?yàn)樗脑O(shè)計(jì)理念 ,它是封閉的。也就是說,除非你使用了它本地化的GUI方法,否則就不可能實(shí)現(xiàn)。
那么說,如果我一定要實(shí)現(xiàn)怎么辦呢?只能走很長的彎路。方法還是有幾個(gè)的。
方法1:
在java的panel里嵌入一個(gè)瀏覽器,然后在瀏覽器里顯示統(tǒng)計(jì)圖表。這個(gè)真是不要太容易了。 不管是你是python生成的本地圖片,還是直接用javascript生成的圖都可以嵌入進(jìn)去。美觀不用說
方法2:
繪圖使用開源的,比如plt之類的。不過它被本地化成java版本的。然后用java調(diào)用python,再用python產(chǎn)生數(shù)據(jù)后,通過jython調(diào)用java本地化的繪圖工具。
表面上看,這個(gè)東西就是沒有價(jià)值的,為什么不直接用java調(diào)用繪圖。關(guān)鍵在于python本身對(duì)于數(shù)據(jù)處理的優(yōu)勢太明顯。輕松就可以完成復(fù)雜的數(shù)據(jù)結(jié)構(gòu)處理。所以還是有價(jià)值的
方法3:
浮動(dòng)窗口方式。這個(gè)就不說了。如果你的java是固定在窗口特定位置的。這個(gè)就容易了。怎么浮動(dòng)窗口要根據(jù)操作系統(tǒng)而定。
方法4:簡單方案
python生成圖片后,輸出成JPEG或者是PNG或者是GIF,然后讓JAVA顯示這個(gè)圖片。這個(gè)可能是最最簡單的。
方法5:windows專用,不知道可否使用
僅限于特定場景,在要顯示圖片的地方,顯示一個(gè)品紅色的純色圖。然后讓python的圖形輸出轉(zhuǎn)到directshow之類的API,直接寫顯卡。這樣就可以顯示動(dòng)畫效果。
eclip中用JAVA代碼怎么畫柱形圖表
用jfreechart
jfreechart繪制柱狀圖
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDatat;
/*
* 繪制柱狀圖
*你亮哥
* */
public class BarChart3DDemo
{
public static void main(String[] args)
{
try
{
//設(shè)置主題
ChartFactory.tChartTheme(Theme.getTheme());
//構(gòu)造數(shù)據(jù)
DefaultCategoryDatat datat = new DefaultCategoryDatat();
datat.addValue(100, "JAVA","1");
datat.addValue(200, "js","1");
datat.addValue(200, "C++", "2");
datat.addValue(300, "C", "3");
datat.addValue(400, "HTML", "4");
datat.addValue(400, "CSS", "5");
/*
* public static JFreeChart createBarChart3D(
* java.lang.String title, 設(shè)置圖表的標(biāo)題
* java.lang.String categoryAxisLabel, 設(shè)置分類軸的標(biāo)示
* java.lang.String valueAxisLabel, 設(shè)置值軸的標(biāo)示
* CategoryDatat datat, 設(shè)置數(shù)據(jù)
* PlotOrientation orientation, 設(shè)置圖表的方向
* boolean legend, 設(shè)置是否顯示圖例
* boolean tooltips,設(shè)置是否生成熱點(diǎn)工具
* boolean urls) 設(shè)置是否顯示url
*/
JFreeChart chart = ChartFactory.createBarChart3D("編程語言統(tǒng)計(jì)", "語言",
"學(xué)習(xí)人數(shù)", datat, PlotOrientation.VERTICAL, true, fal,
fal);
//保存圖表
ChartUtilities.saveChartAsPNG(new File("E:/chart/BarChart3D.png"), chart, 800, 500);
System.out.println("繪圖完成");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
===================================================================================
//一條線 有點(diǎn) 有數(shù)
package Test;
import java.awt.Color;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisSpace;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardXYItemLabelGenerator;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.ui.RectangleInts;
import org.jfree.ui.TextAnchor;
public class try123 {
public static void main(String[] args){
//首先構(gòu)造數(shù)據(jù)
TimeSeries timeSeries = new TimeSeries("BMI", Month.class);
// 時(shí)間曲線數(shù)據(jù)集合
TimeSeriesCollection lineDatat = new TimeSeriesCollection();
// 構(gòu)造數(shù)據(jù)集合
timeSeries.add(new Month(1, 2009), 45);
timeSeries.add(new Month(2, 2009), 46);
timeSeries.add(new Month(3, 2009), 1);
timeSeries.add(new Month(4, 2009), 500);
timeSeries.add(new Month(5, 2009), 43);
timeSeries.add(new Month(6, 2009), 324);
timeSeries.add(new Month(7, 2009), 632);
timeSeries.add(new Month(8, 2009), 34);
timeSeries.add(new Month(9, 2009), 12);
timeSeries.add(new Month(10, 2009), 543);
timeSeries.add(new Month(11, 2009), 32);
timeSeries.add(new Month(12, 2009), 225);
lineDatat.addSeries(timeSeries);
JFreeChart chart = ChartFactory.createTimeSeriesChart("", "date", "bmi", lineDatat, true, true, true);
//增加標(biāo)題
chart.tTitle(new TextTitle("XXXBMI指數(shù)", new Font("隸書", Font.ITALIC, 15)));
chart.tAntiAlias(true);
XYPlot plot = (XYPlot) chart.getPlot();
plot.tAxisOfft(new RectangleInts(10,10,10,10));//圖片區(qū)與坐標(biāo)軸的距離
plot.tOutlinePaint(Color.PINK);
plot.tInts(new RectangleInts(15,15,15,15));//坐標(biāo)軸與最外延的距離
// plot.tOrientation(PlotOrientation.HORIZONTAL);//圖形的方向,包括坐標(biāo)軸。
AxisSpace as = new AxisSpace();
as.tLeft(25);
as.tRight(25);
plot.tFixedRangeAxisSpace(as);
chart.tPadding(new RectangleInts(5,5,5,5));
chart.tNotify(true);
// 設(shè)置曲線是否顯示數(shù)據(jù)點(diǎn)
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
xylineandshaperenderer.tBaShapesVisible(true);
// 設(shè)置曲線顯示各數(shù)據(jù)點(diǎn)的值
XYItemRenderer xyitem = plot.getRenderer();
xyitem.tBaItemLabelsVisible(true);
xyitem.tBaPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_LEFT));
xyitem.tBaItemLabelGenerator(new StandardXYItemLabelGenerator());
xyitem.tBaItemLabelFont(new Font("Dialog", 1, 14));
plot.tRenderer(xyitem);
//顯示
ChartFrame frame = new ChartFrame("try1", chart);
frame.pack();
frame.tVisible(true);
}
}
java做報(bào)表
把數(shù)據(jù)庫中需要的數(shù)據(jù)處理后做成可視化圖表,根據(jù)不同需求可以做成不同形式的圖表,節(jié)省時(shí)間,效果比較好,報(bào)表軟件國外的話水晶報(bào)表,SAP公司的商業(yè)報(bào)表工具,作為SAP“集團(tuán)”下的報(bào)表組件模塊。10年事前盛行一時(shí),后被SAP收購。但水晶報(bào)表(Crystal Report)在理論上只支持單數(shù)據(jù)集,對(duì)多集的支持依賴于數(shù)據(jù)庫的運(yùn)算能力(叉乘與聯(lián)合等或?qū)懘鎯?chǔ)過程),多庫一般難以支持。
國內(nèi)的話FineReport,目前國內(nèi)報(bào)表軟件領(lǐng)域發(fā)展最成熟也是市場份額最高的。IDC的報(bào)告里,17年甚至超過SAP,IBM,在這個(gè)細(xì)分領(lǐng)域,也是Gartner的BI選型市場指南里唯一推薦的報(bào)表工具。零代碼開發(fā),類似excel的設(shè)計(jì)方式,上手簡單。尤其數(shù)據(jù)字典、實(shí)際值和顯示值等的設(shè)計(jì)更是切入快速開發(fā)的要害,這些放在別的語言和體系下往往要大量代碼才能實(shí)現(xiàn)且頻繁需要的功能放在FineReport里卻只是幾個(gè)操作的事情。移動(dòng)端報(bào)表+可視化大屏。
java實(shí)現(xiàn)簡單的圖書銷售統(tǒng)計(jì)系統(tǒng),要用GUI 求java高手幫忙 謝謝啦
我看到數(shù)據(jù)好像是保存在文件中的,這樣解析很不給力。
建議使用 access 數(shù)據(jù)庫,小巧又好用。
其他的這幾個(gè)功能也不難,樓主,你哪里不會(huì),你的思路是什么,可以講一講,可以協(xié)助你完成。