本文目錄一覽:
- 1、怎麼使用canvas循環生成餅圖
- 2、js怎麼製作餅狀圖?
- 3、用jsp怎樣生成柱狀圖,餅狀圖,折線圖
- 4、js 做3D的柱狀圖和餅狀圖的js庫有哪些?求大神們介紹。只限制js庫,或者純javascript。謝謝~~
怎麼使用canvas循環生成餅圖
function drawCircle(canvasId, data_arr, color_arr, text_arr) {
var pi2 = Math.PI*2;
var canvas =document.getElementById(canvasId);
var c =canvas.getContext(“2d”);
c.font =”12px Times New Roman”;
var startAgl = 0;
var agl;
for(var i=0; i data_arr.length; i++){
//繪製餅圖
agl = data_arr[i] * pi2 + startAgl;
c.fillStyle=color_arr[i];
c.beginPath();
c.moveTo(200,200);
c.arc(200, 200, 150, startAgl, agl, false);
c.lineTo(200,200);
//c.stroke();
c.fill();
startAgl = agl;
//繪製圖例
c.fillRect(360, 50+18*i,16,16);
c.fillStyle=”#000000″;
c.fillText(text_arr[i], 380, 62+18*i );
}
}
以上是繪製餅圖的代碼,效果如下:
至於
%%這個是jsp代碼標記,不能直接調用js代碼
js怎麼製作餅狀圖?
有用SVG的方法
還有用HTML5的canvas控制項
不過這個如果用源生方法的話比較複雜
你可以用一些已經有的框架來做
比如說:Dojo Charting
這是一個JS庫.
你可以參考下
還有就是一些有名氣的JS庫
比如:Ext4.0版本的chart類
示例如下:
JS框架都是一般兼容的
用jsp怎樣生成柱狀圖,餅狀圖,折線圖
jsp生成柱狀圖,餅狀圖,折線圖可以藉助於jfreechart。
1、柱狀圖的生成源碼:
/**
* 生產柱狀圖
* @version 1.0
* @since
*/
@SuppressWarnings(“serial”)
public class PillarServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html”);
// 使用普通數據集
DefaultCategoryDataset chartDate = new DefaultCategoryDataset();
// 增加測試數據,第一個參數是訪問量,最後一個是時間,中間是顯示用不考慮
chartDate.addValue(55, “訪問量”, “2010-01”);
chartDate.addValue(65, “訪問量”, “2010-02”);
chartDate.addValue(59, “訪問量”, “2010-03”);
chartDate.addValue(156, “訪問量”, “2010-04”);
chartDate.addValue(452, “訪問量”, “2010-05”);
chartDate.addValue(359, “訪問量”, “2010-06”);
try {
// 從資料庫中獲得數據集
DefaultCategoryDataset data = chartDate;
// 使用ChartFactory創建3D柱狀圖,不想使用3D,直接使用createBarChart
JFreeChart chart = ChartFactory.createBarChart3D(
“網站月訪問量統計”, // 圖表標題
“時間”, // 目錄軸的顯示標籤
“訪問量”, // 數值軸的顯示標籤
data, // 數據集
PlotOrientation.VERTICAL, // 圖表方向,此處為垂直方向
// PlotOrientation.HORIZONTAL, //圖表方向,此處為水平方向
true, // 是否顯示圖例
true, // 是否生成工具
false // 是否生成URL鏈接
);
// 設置整個圖片的背景色
chart.setBackgroundPaint(Color.PINK);
// 設置圖片有邊框
chart.setBorderVisible(true);
Font kfont = new Font(“宋體”, Font.PLAIN, 12); // 底部
Font titleFont = new Font(“宋體”, Font.BOLD, 25); // 圖片標題
// 圖片標題
chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont));
// 底部
chart.getLegend().setItemFont(kfont);
// 得到坐標設置字體解決亂碼
CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
categoryplot.setDomainGridlinesVisible(true);
categoryplot.setRangeCrosshairVisible(true);
categoryplot.setRangeCrosshairPaint(Color.blue);
NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer();
barrenderer.setBaseItemLabelFont(new Font(“宋體”, Font.PLAIN, 12));
barrenderer.setSeriesItemLabelFont(1, new Font(“宋體”, Font.PLAIN, 12));
CategoryAxis domainAxis = categoryplot.getDomainAxis();
/*——設置X軸坐標上的文字———–*/
domainAxis.setTickLabelFont(new Font(“sans-serif”, Font.PLAIN, 11));
/*——設置X軸的標題文字————*/
domainAxis.setLabelFont(new Font(“宋體”, Font.PLAIN, 12));
/*——設置Y軸坐標上的文字———–*/
numberaxis.setTickLabelFont(new Font(“sans-serif”, Font.PLAIN, 12));
/*——設置Y軸的標題文字————*/
numberaxis.setLabelFont(new Font(“宋體”, Font.PLAIN, 12));
/*——這句代碼解決了底部漢字亂碼的問題———–*/
chart.getLegend().setItemFont(new Font(“宋體”, Font.PLAIN, 12));
// 生成圖片並輸出
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1.0f,
chart, 500, 300, null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
2、生成餅狀統計圖:
/**
* 生成餅狀統計圖
* @version 1.0
* @since
*/
@SuppressWarnings(“serial”)
public class CakeServlet extends HttpServlet {
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html”);
// 默認數據類型
DefaultPieDataset dataType = new DefaultPieDataset();
// 數據參數 內容,數量
dataType.setValue(“IE6”, 156);
dataType.setValue(“IE7”, 230);
dataType.setValue(“IE8”, 45);
dataType.setValue(“火狐”, 640);
dataType.setValue(“谷歌”, 245);
try {
DefaultPieDataset data = dataType;
// 生成普通餅狀圖除掉 3D 即可
// 生產3D餅狀圖
PiePlot3D plot = new PiePlot3D(data);
JFreeChart chart = new JFreeChart(
“用戶使用的瀏覽器類型”, // 圖形標題
JFreeChart.DEFAULT_TITLE_FONT, // 標題字體
plot, // 圖標標題對象
true // 是否顯示圖例
);
// 設置整個圖片的背景色
chart.setBackgroundPaint(Color.PINK);
// 設置圖片有邊框
chart.setBorderVisible(true);
// 配置字體
Font kfont = new Font(“宋體”, Font.PLAIN, 12); // 底部
Font titleFont = new Font(“宋體”, Font.BOLD, 25); // 圖片標題
// 圖片標題
chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont));
// 底部
chart.getLegend().setItemFont(kfont);
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1.0f,
chart, 500, 300, null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
3、柱狀分布統計圖:
/**
* 柱狀分布統計圖
* @version 1.0
* @since
*/
@SuppressWarnings(“serial”)
public class ParagraphsServlet extends HttpServlet {
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html”);
DefaultCategoryDataset dataTime = new DefaultCategoryDataset();
// 這是一組數據
dataTime.addValue(52, “0-6”, “2010-1-1”);
dataTime.addValue(86, “6-12”, “2010-1-1”);
dataTime.addValue(126, “12-18”, “2010-1-1”);
dataTime.addValue(42, “18-24”, “2010-1-1”);
// 這是一組數據
dataTime.addValue(452, “0-6”, “2010-1-2”);
dataTime.addValue(96, “6-12”, “2010-1-2”);
dataTime.addValue(254, “12-18”, “2010-1-2”);
dataTime.addValue(126, “18-24”, “2010-1-2”);
// 這是一組數據
dataTime.addValue(256, “0-6”, “2010-1-3”);
dataTime.addValue(86, “6-12”, “2010-1-3”);
dataTime.addValue(365, “12-18”, “2010-1-3”);
dataTime.addValue(24, “18-24”, “2010-1-3”);
try {
DefaultCategoryDataset data = dataTime;
// 使用ChartFactory創建3D柱狀圖,不想使用3D,直接使用createBarChart
JFreeChart chart = ChartFactory.createBarChart3D(
“網站時間段訪問量統計”,
“時間”,
“訪問量”,
data,
PlotOrientation.VERTICAL,
true,
false,
false
);
// 設置整個圖片的背景色
chart.setBackgroundPaint(Color.PINK);
// 設置圖片有邊框
chart.setBorderVisible(true);
Font kfont = new Font(“宋體”, Font.PLAIN, 12); // 底部
Font titleFont = new Font(“宋體”, Font.BOLD, 25); // 圖片標題
// 圖片標題
chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont));
// 底部
chart.getLegend().setItemFont(kfont);
// 得到坐標設置字體解決亂碼
CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
categoryplot.setDomainGridlinesVisible(true);
categoryplot.setRangeCrosshairVisible(true);
categoryplot.setRangeCrosshairPaint(Color.blue);
NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer();
barrenderer.setBaseItemLabelFont(new Font(“宋體”, Font.PLAIN, 12));
barrenderer.setSeriesItemLabelFont(1, new Font(“宋體”, Font.PLAIN, 12));
CategoryAxis domainAxis = categoryplot.getDomainAxis();
/*——設置X軸坐標上的文字———–*/
domainAxis.setTickLabelFont(new Font(“sans-serif”, Font.PLAIN, 11));
/*——設置X軸的標題文字————*/
domainAxis.setLabelFont(new Font(“宋體”, Font.PLAIN, 12));
/*——設置Y軸坐標上的文字———–*/
numberaxis.setTickLabelFont(new Font(“sans-serif”, Font.PLAIN, 12));
/*——設置Y軸的標題文字————*/
numberaxis.setLabelFont(new Font(“宋體”, Font.PLAIN, 12));
/*——這句代碼解決了底部漢字亂碼的問題———–*/
chart.getLegend().setItemFont(new Font(“宋體”, Font.PLAIN, 12));
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1.0f,
chart, 500, 300, null);
} catch (Exception es) {
es.printStackTrace();
}
}
}
js 做3D的柱狀圖和餅狀圖的js庫有哪些?求大神們介紹。只限制js庫,或者純javascript。謝謝~~
推薦基於webGL的3D框架類庫!three.js的知名度很高,在開源中國、思否、掘金等技術社區會有很多應用指導案例,很多人問我是不是需要學webGL,three.js正是對webgl進行了封裝,提供更高層的渲染介面,不用重新學習3D繪圖底層邏輯。
題主沒有提供太多背景信息,是否具備中高級前端開發基礎?three.js相對於初學者門檻很高,需要花費更多的時間,一個載入模型、調光、選擇模型彈框的功能,就能寫出Threejs上百行代碼。
有一個針對前端轉3D開發初學者的解決方案,推薦thingjs在線平台,開發體驗比較如下:
提醒一下,three.js並沒有特定的行業應用,屬於技術研究範疇;thingjs專註於物聯網3D可視化領域,對於智慧城市、智慧工廠、安全消防、城市交通可視化應用開發者非常友好!做前端技術應用,推薦物聯網3D商業項目方向,15萬個開發者的一致選擇!
原創文章,作者:FTGHC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/331436.html