Rumah > Artikel > hujung hadapan web > Highcharts menggunakan contoh mudah dan bacaan dinamik tak segerak bagi kemahiran data_javascript
Highcharts ialah perpustakaan carta yang ditulis dalam JavaScript tulen. Ia boleh menambah carta interaktif dengan mudah dan mudah pada tapak web atau aplikasi web Ia percuma untuk kajian peribadi, tapak web peribadi dan penggunaan bukan komersial. Jenis carta yang disokong oleh HighCharts termasuk carta garis, carta kawasan, carta bar, carta pai, carta serakan dan carta komprehensif.
Bahagian satu: Muatkan dua perpustakaan JS antara kepala.
<script src="html/js/jquery.js"></script> <script src="html/js/chart/highcharts.js"></script>
Anda boleh memuat turunnya daripada http://www.hcharts.cn/ Terdapat tutorial dan arahan penggunaan yang berkaitan.
Jika anda mahir berbahasa Inggeris, anda boleh pergi ke laman web rasmi: http://www.highcharts.com/
Bahagian 2: Kod JS
//定义一个Highcharts的变量,初始值为null var oChart = null; //定义oChart的布局环境 //布局环境组成:X轴、Y轴、数据显示、图标标题 var oOptions = { //设置图表关联显示块和图形样式 chart: { renderTo: 'container', //设置显示的页面块 //type:'line' //设置显示的方式 type: 'column' }, //图标标题 title: { text: '图表展示范例', //设置标题 //text: null, //设置null则不显示标题 }, //x轴 xAxis: { title: { text: 'X 轴 标 题' }, categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, //y轴 yAxis: { title: { text: 'Y 轴 标 题' }, //设置Y轴标题关闭 }, //数据列 series: [{ data:[120,360,560,60,360,160,40,360,60,230,230,300] }] }; $(document).ready(function(){ oChart = new Highcharts.Chart(oOptions); //异步添加第2条数据列 LoadSerie_Ajax(); }); //异步读取数据并加载到图表 function LoadSerie_Ajax() { oChart.showLoading(); $.ajax({ url : 'ajax/get_value.aspx', type : 'POST', dataType : 'json', async : false, //同步处理后面才能处理新添加的series contentType: "application/x-www-form-urlencoded; charset=utf-8", success : function(rntData){ var oSeries = { name: "第二条", data: rntData.rows1 }; oChart.addSeries(oSeries); } }); oChart.hideLoading(); }
Bahagian 3: Kod C#
Response.Clear(); Response.Write("{\"rows1\":[10,20,30,40,50,200,70,100,90,200,100,60]}"); Response.End(); 输出的数据格式为 {"rows1":[10,20,30,40,50,200,70,100,90,200,100,60]} 多条的数据格式为 {"rows1":[10,20,30,40,50,200,70,100,90,200,100,60],"rows2":[10,20,30,40,50,200,70,100,90,200,100,60]}
Bahagian 4: Kod halaman HTML
<div id="container" style="min-width:400px;width:1200px;height:400px;"></div>
Izinkan saya berkongsi dengan anda sekeping kod tentang carta tinggi mendapatkan data secara tak segerak
Kod tak segerak halaman
$(function () { var chart_validatestatics; $(document).ready(function () { var options_validatestatics = { chart: { renderTo: 'container_validatestatics', type: 'column' }, title: { text: '验票分析' }, subtitle: { text: 'tourol.cn' }, xAxis: { }, yAxis: { title: { text: '人数' } }, plotOptions: { bar: { dataLabels: { enabled: true } } }, tooltip: { formatter: function () { return '<b>' + this.x + '</b><br/>' + this.series.name + ': ' + this.y + '人'; } }, credits: { enabled: false }, series: [{ name: "验票用户", width: 3 }] } $.get("/ajaxhandler/dataupdate.ashx?operate_type=validatestatics", function (data) { var xatrnames = []; var yvalidators = []; for (var i = 0; i < data.rows.length; i++) { xatrnames.push([ data.rows[i].atrname ]); yvalidators.push([ data.rows[i].atrname, parseInt(data.rows[i].nums) ]); } alert(xatrnames + yvalidators); options_validatestatics.xAxis.categories = xatrnames options_validatestatics.series[0].data = yvalidators; chart_validatestatics = new Highcharts.Chart(options_validatestatics); }); }); });
Apa yang perlu diperhatikan di sini ialah: selepas tatasusunan paksi-x ditakrifkan, apabila mentakrifkan data paksi-y, nilai-nilai yang sepadan dengan paksi-x juga mesti ditolak ke dalam tatasusunan, jika tidak ia tidak akan dipaparkan
Selaras dengan itu, dalam ajaxhandler, hanya sambung rentetan dan kembalikannya
string json = "{\"rows\":["; for (int i = 0; i < datas.Rows.Count; i++) { json += "{\"atrname\":\"" + datas.Rows[i]["name"] + "\",\"nums\":\"" + datas.Rows[i]["nums"] + "\"},"; } json = json.TrimEnd(','); json += "]}"; context.Response.Write(json); context.Response.Flush(); context.Response.End();