為什么不可以EXCEL做呢??環(huán)形圖加雷達(dá)的符合圖,如果要圓的也可以用環(huán)形圖
創(chuàng)新互聯(lián)專注于阜康網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供阜康營銷型網(wǎng)站建設(shè),阜康網(wǎng)站制作、阜康網(wǎng)頁設(shè)計(jì)、阜康網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造阜康網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供阜康網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
有兩個(gè)圖你對(duì)比著看結(jié)果,
用/* */注釋掉的可以和上邊的同行數(shù)相換,你試一下。
//后面的是注釋
import java.applet.Applet;
import java.awt.*;
public class katai3 extends Applet {
int pa[] = new int[10];// 定義3個(gè)數(shù)組,大小為10
int a[] = new int[10];
int b[] = new int[10];
public void init() { // 初始化數(shù)組pa[]
setBackground(new Color(255, 255, 255));// 設(shè)置背景顏色白色
pa[0] = 140;
pa[1] = 100;
pa[2] = 90;
pa[3] = 120;
pa[4] = 50;
pa[5] = 60;// 給數(shù)組pa[]附初值
pa[6] = 42;
pa[7] = 150;
pa[8] = 42;
pa[9] = 150;
}
public void paint(Graphics g) {
int r, i, k;// 定義3個(gè)變量r, i, k
for (k = 0; k 5; k++) {
r = k * 50;
for (i = 0; i 10; i++) {
double rad = Math.PI / 180;// 定義角度1度
int x1 = (int) (300 + r * Math.cos(36 * (i) * rad));// 定義網(wǎng)格
int y1 = (int) (300 - r * Math.sin(36 * (i) * rad));
int x2 = (int) (300 + r * Math.cos(36 * (i + 1) * rad));// 定義網(wǎng)格
int y2 = (int) (300 - r * Math.sin(36 * (i + 1) * rad));
int x3 = (int) (300 + (-215) * Math.sin(-36 * (i - 0.5) * rad));// 定義標(biāo)記數(shù)字位置
int y3 = (int) (300 + (-215) * Math.cos(-36 * (i - 0.5) * rad));
/*
int x1=(int)(300+r*Math.cos(36*(i-0.5)*rad));//定義網(wǎng)格
int y1=(int)(300-r*Math.sin(36*(i-0.5)*rad));
int x2=(int)(300+r*Math.cos(36*(i+0.5)*rad));//定義網(wǎng)格
int y2=(int)(300-r*Math.sin(36*(i+0.5)*rad));
int x3=(int)(300+(-215)*Math.sin(-36*i*rad));//定義標(biāo)記數(shù)字位置
int y3=(int)(300+(-215)*Math.cos(-36*i*rad));
*/
g.drawString(i + 1 + "", x3, y3);// 畫數(shù)字
g.drawLine(x1, y1, x2, y2);// 畫雷達(dá)
}
}
for (i = 0; i 10; i++) {
double rad = Math.PI / 180;// 定義角度1度
a[i] = (int) (300 + pa[i] * Math.sin(36 * (i-0.5) * rad));// 定義圖形區(qū)域
b[i] = (int) (300 - pa[i] * Math.cos(36 * (i-0.5) * rad));
/*a[i]=(int)(300+pa[i]*Math.sin(36*i*rad));//定義圖形區(qū)域
b[i]=(int)(300-pa[i]*Math.cos(36*i*rad));
*/
}
g.setColor(Color.red);// 調(diào)g的setColor方法定義顏色-紅色
g.fillPolygon(a, b, 10);// 畫圖形填充區(qū)域
g.setColor(Color.black);// 調(diào)g的setColor方法定義顏色-黑色
g.drawPolygon(a, b, 10);// 畫輪廓線
for (i = 0; i 10; i++) {
int x4 = (int) (300 + 200 * Math.cos(36 * i * Math.PI / 180));// 定義米字骨
int y4 = (int) (300 - 200 * Math.sin(36 * i * Math.PI / 180));
/*int x4=(int)(300+200*Math.cos(36*(i-0.5)*Math.PI/180));//定義米字骨
int y4=(int)(300-200*Math.sin(36*(i-0.5)*Math.PI/180));
*/
g.setColor(Color.black);// 調(diào)g的setColor方法定義顏色-黑色
g.drawLine(300, 300, x4, y4);// 畫輪廓線
}
for (k = 0; k 5; k++) {// 畫刻度線0, 50, 100, 150, 200
double rad = Math.PI / 180;// 定義角度1度
g.drawString(k * 50 + "",(int) (300 - 60 * k * Math.sin(15 * rad)), 300 - k * 50);
/* g.drawString(k*50+"",300,300-k*50);
*/
}
}
}
根據(jù)需求,代碼大致如下
public?class?T2?{
public?static?String?getPropertyGetMethodName(String?property)?{
if?(property?==?null?||?property.trim().length()?==?0)
return?"";
return?"get"?+?String.valueOf(property.charAt(0)).toUpperCase()
+?property.subSequence(1,?property.length());
}
public?static?void?main(String[]?args)?{
System.out.println(getPropertyGetMethodName("a"));
System.out.println(getPropertyGetMethodName("name"));
System.out.println(getPropertyGetMethodName("names"));
}
}
通過Java程序?qū)С鰩D表的excel嗎?參考下面用spire.xls.jar來創(chuàng)建Excel圖表的方法,這里以創(chuàng)建餅圖為例,當(dāng)然你也可以指定創(chuàng)建其他圖表類型,如柱狀圖、折線圖、雷達(dá)圖、散點(diǎn)圖等等:
import com.spire.xls.*;
import com.spire.xls.charts.ChartSerie;
import java.awt.*;
public class CreatePieChart {
public static void main(String[] args) {
//創(chuàng)建Workbook對(duì)象
Workbook workbook = new Workbook();
//獲取第一個(gè)工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//將圖表數(shù)據(jù)寫入工作表
sheet.getCellRange("A1").setValue("年份");
sheet.getCellRange("A2").setValue("2002");
sheet.getCellRange("A3").setValue("2003");
sheet.getCellRange("A4").setValue("2004");
sheet.getCellRange("A5").setValue("2005");
sheet.getCellRange("B1").setValue("銷售額");
sheet.getCellRange("B2").setNumberValue(4000);
sheet.getCellRange("B3").setNumberValue(6000);
sheet.getCellRange("B4").setNumberValue(7000);
sheet.getCellRange("B5").setNumberValue(8500);
//設(shè)置單元格樣式
sheet.getCellRange("A1:B1").setRowHeight(15);
sheet.getCellRange("A1:B1").getCellStyle().setColor(Color.darkGray);
sheet.getCellRange("A1:B1").getCellStyle().getExcelFont().setColor(Color.white);
sheet.getCellRange("A1:B1").getCellStyle().setVerticalAlignment(VerticalAlignType.Center);
sheet.getCellRange("A1:B1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center);
sheet.getCellRange("B2:C5").getCellStyle().setNumberFormat("\"¥\"#,##0");
//添加餅圖
Chart chart = sheet.getCharts().add(ExcelChartType.Pie);
//設(shè)置圖表數(shù)據(jù)區(qū)域
chart.setDataRange(sheet.getCellRange("B2:B5"));
chart.setSeriesDataFromRange(false);
//設(shè)置圖表位置
chart.setLeftColumn(3);
chart.setTopRow(1);
chart.setRightColumn(11);
chart.setBottomRow(20);
//設(shè)置圖表標(biāo)題
chart.setChartTitle("年銷售額");
chart.getChartTitleArea().isBold(true);
chart.getChartTitleArea().setSize(12);
//設(shè)置系列標(biāo)簽
ChartSerie cs = chart.getSeries().get(0);
cs.setCategoryLabels(sheet.getCellRange("A2:A5"));
cs.setValues(sheet.getCellRange("B2:B5"));
cs.getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
chart.getPlotArea().getFill().setVisible(false);
//保存文檔
workbook.saveToFile("output/PieChart.xlsx", ExcelVersion.Version2016);
}
}
餅圖創(chuàng)建效果:
excel餅狀圖效果
給你一個(gè)我從上反編譯過來的,是個(gè)雷達(dá)圖,包加載對(duì)了你就能看到效果
package demo;
import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.plot.SpiderWebPlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.*;
public class SpiderWebChartDemo1 extends ApplicationFrame
{
public SpiderWebChartDemo1(String s)
{
super(s);
JPanel jpanel = createDemoPanel();
jpanel.setPreferredSize(new Dimension(500, 270));
setContentPane(jpanel);
}
private static CategoryDataset createDataset()
{
String s = "First";
String s1 = "Second";
String s2 = "Third";
String s3 = "Category 1";
String s4 = "Category 2";
String s5 = "Category 3";
String s6 = "Category 4";
String s7 = "Category 5";
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(1.0D, s, s3);
defaultcategorydataset.addValue(4D, s, s4);
defaultcategorydataset.addValue(3D, s, s5);
defaultcategorydataset.addValue(5D, s, s6);
defaultcategorydataset.addValue(5D, s, s7);
defaultcategorydataset.addValue(5D, s1, s3);
defaultcategorydataset.addValue(7D, s1, s4);
defaultcategorydataset.addValue(6D, s1, s5);
defaultcategorydataset.addValue(8D, s1, s6);
defaultcategorydataset.addValue(4D, s1, s7);
defaultcategorydataset.addValue(4D, s2, s3);
defaultcategorydataset.addValue(3D, s2, s4);
defaultcategorydataset.addValue(2D, s2, s5);
defaultcategorydataset.addValue(3D, s2, s6);
defaultcategorydataset.addValue(6D, s2, s7);
return defaultcategorydataset;
}
private static JFreeChart createChart(CategoryDataset categorydataset)
{
SpiderWebPlot spiderwebplot = new SpiderWebPlot(categorydataset);
spiderwebplot.setStartAngle(54D);
spiderwebplot.setInteriorGap(0.40000000000000002D);
spiderwebplot.setToolTipGenerator(new StandardCategoryToolTipGenerator());
JFreeChart jfreechart = new JFreeChart("Spider Web Chart Demo 1", TextTitle.DEFAULT_FONT, spiderwebplot, false);
LegendTitle legendtitle = new LegendTitle(spiderwebplot);
legendtitle.setPosition(RectangleEdge.BOTTOM);
jfreechart.addSubtitle(legendtitle);
return jfreechart;
}
public static JPanel createDemoPanel()
{
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}
public static void main(String args[])
{
SpiderWebChartDemo1 spiderwebchartdemo1 = new SpiderWebChartDemo1("SpiderWebChartDemo1");
spiderwebchartdemo1.pack();
RefineryUtilities.centerFrameOnScreen(spiderwebchartdemo1);
spiderwebchartdemo1.setVisible(true);
}
}
D3.js
D3 是最流行的可視化庫之一,它被很多其他的表格插件所使用。它允許綁定任意數(shù)據(jù)到 DOM,然后將數(shù)據(jù)驅(qū)動(dòng)轉(zhuǎn)換應(yīng)用到文檔中。你可以使用它用一個(gè)數(shù)組創(chuàng)建基本的
HMTL 表格,或是利用它的流體過度和交互,用相似的數(shù)據(jù)創(chuàng)建驚人的 SVG 條形圖。
ChartJS
Chart.js 是一個(gè)令人印象深刻的 JavaScript 圖表庫,建立在 HTML5 Canvas
基礎(chǔ)上。目前,它支持6種圖表類型(折線圖,條形圖,雷達(dá)圖,餅圖,柱狀圖和極地區(qū)域區(qū))。而且,這是一個(gè)獨(dú)立的包,不依賴第三方 JavaScript 庫,小于
5KB。
Highcharts JS
Highcharts JS 是一個(gè)制作圖表的純 Javascript 類庫,主要特性如下:兼容性:兼容當(dāng)今所有的瀏覽器,包括 iPhone、IE
和火狐等等;對(duì)個(gè)人用戶完全免 費(fèi);純JS,無BS;支持大部分的圖表類型:直線圖,曲線圖、區(qū)域圖、區(qū)域曲線圖、柱狀圖、餅裝圖、散布圖;跨語言:不管是
PHP、Asp.net 還是 Java 都可以使用。
Fusioncharts
FusionCharts Suite XT 是個(gè)專業(yè)的 JavaScript
圖表庫,能創(chuàng)建任何類型的圖表。它創(chuàng)建的圖表都是可以進(jìn)行完全自定義的,標(biāo)簽,字體,邊界等等,都可以進(jìn)行修改。它有很強(qiáng)的交互功能,有許多信息提示,可 點(diǎn)擊的
legend 關(guān)鍵字,還有 dril-down,縮放/滾動(dòng) 和單擊打印圖表功能。
Flot
Flot 是受 Plotr 和 PlotKit 的 啟發(fā),Ole Laursen 基于 jQuery 開發(fā)了一個(gè)圖表繪制(WEB Chart)插件并命名為
flot。 flot 是個(gè)純 JavaSript 庫,專注于簡單的使用方式,迷人的外觀和交互式特性。支持的瀏覽器有: Internet Explorer 6+,
Chrome, Firefox 2+, Safari 3+ and Opera 9.5+。
Chartist.js
Chartist.js 提供了優(yōu)美的響應(yīng)圖表。就像 ChartJS。它使用 SVG 渲染圖,可以被控制,并通過對(duì) CSS3 媒體查詢和 SASS
定制。另外 Chartist.js 提供很酷的動(dòng)畫。
n3-charts
如果你是一個(gè) AngularJS 開發(fā)者,你一定喜歡款有趣的圖表。它是建立在 D3.js 和 AngularJS 的基礎(chǔ)上,提供了可定制的
AngularJS 指令的形式不同標(biāo)準(zhǔn)的圖表。
Ember Charts
Ember Charts 是一個(gè)基于 Ember.js 和 D3.js
的圖表庫。它包括時(shí)間序列、柱狀圖、餅圖、點(diǎn)圖,很容易擴(kuò)展和修改。這些圖表組件代表圖表交互性和演示的最佳實(shí)踐,是高度可定制和可擴(kuò)展的。
Chartkick
Chartkick 是專為 Ruby 應(yīng)用程序的 JavaScript
圖表庫。它提供了所有主要的圖表類型,如餅圖,柱形圖,條形圖,面積,地理,時(shí)間,以及多個(gè)系列。
MeteorCharts
它有一個(gè)很酷的圖表生成器,為您提供選項(xiàng)來選擇圖表,選擇主題,然后生成一個(gè)圖表。
amCharts
amCharts 無疑是最漂亮的圖表庫。amCharts 提供了JavaScript/HTML5 Charts、Javascript/HTML5
Stock Chart、JavaScript Maps 三種圖表組件。
EJS Chart
EJS圖表聲稱自己是企業(yè)準(zhǔn)備的圖表庫。圖表看起來很干凈,可讀性比大多數(shù)舊的圖表庫。這也是與IE6+等舊瀏覽器兼容。
uvCharts
uvCharts 是一個(gè)開源的 JavaScript 圖表庫,號(hào)稱有100多個(gè)自定義選項(xiàng)。它擁有12種不同的標(biāo)準(zhǔn)圖表類型,開箱即用。
ECharts
基于 Canvas,純 JavaScript
圖表庫,提供直觀,生動(dòng),可交互,可個(gè)性化定制的數(shù)據(jù)可視化圖表。創(chuàng)新的拖拽重計(jì)算、數(shù)據(jù)視圖、值域漫游等特性大大增強(qiáng)了用戶體驗(yàn),賦予了用戶對(duì)數(shù)據(jù)進(jìn)行挖掘、整合的能力。
商業(yè)產(chǎn)品常用圖表庫,底層基于ZRender,創(chuàng)建了坐標(biāo)系,圖例,提示,工具箱等基礎(chǔ)組件,并在此上構(gòu)建出折線圖(區(qū)域圖)、柱狀圖(條狀圖)、散點(diǎn)圖(氣泡圖)、餅圖(環(huán)形圖)、K線圖、地圖、和弦圖以及力導(dǎo)向布局圖,同時(shí)支持任意維度的堆積和多圖表混合展現(xiàn)。