记一次非常无语的生成柱状图,js,ecshop。

如题,无语且非常郁闷。

要求是根据查询出来的数据动态生成柱状图。但是ecshop的查询ajax回调都是已经封装好了的。根本就不能改。

无奈之下只好百度了一个画柱状图的代码,每隔2秒抓取页面数据,重新绘制一次柱状图,假装自己是动态的。郁闷...

随便上个代码留个纪念,好歹做了三个小时。ummmm....

   <canvas id="a_canvas" width="1000" height="700"></canvas>  <script type="text/javascript" language="JavaScript">
   setInterval("xixi()","2000"); //两秒运行一次    
 36   function xixi(){
 37   var c=document.getElementById("a_canvas");  //清空画布
 38   var cxt=c.getContext("2d");
 39   c.height=c.height;
 40
 41   var a=document.getElementById("table").getElementsByTagName("td");
 42   var aa ="";
 43   var bb ="";
 44   j=1000;x=0;y=0;
 45     for (var i=0;i<a.length;i++){
 46         if(a[i].innerHTML=="合计")
 47         {
 48             j=i+2;
 49         }
 50         if(i==j)
 51         {
 52         break;
 53         }
 54         else{
 55
 56         if(i%2)
 57         {aa =aa+a[i].innerHTML+",";}
 58         else
 59         {bb =bb+"‘"+a[i].innerHTML+"‘,";}
 60         }
 61
 62     }
 63
 64 data=aa.split(",");
 65  xinforma=bb.split(",");
 66
 67
 68           // 获取上下文
 69           var a_canvas = document.getElementById(‘a_canvas‘);
 70           var context = a_canvas.getContext("2d");
 71
 72
 73           // 绘制背景
 74           var gradient = context.createLinearGradient(0,0,0,300);
 75
 76
 77          // gradient.addColorStop(0,"#e0e0e0");
 78           //gradient.addColorStop(1,"#ffffff");
 79
 80
 81           context.fillStyle = gradient;
 82
 83           context.fillRect(0,0,a_canvas.width,a_canvas.height);
 84
 85           var realheight = a_canvas.height-15;
 86           var realwidth = a_canvas.width-40;
 87           // 描绘边框
 88           var grid_cols = data.length;
 89           var grid_rows = 4;
 90           var cell_height = realheight / grid_rows;
 91           var cell_width = realwidth / grid_cols;
 92           context.lineWidth = 1;
 93           context.strokeStyle = "#a0a0a0";
 94
 95           // 结束边框描绘
 96           context.beginPath();
 97           // 准备画横线
 98           /*for(var row = 1; row <= grid_rows; row++){
 99             var y = row * cell_height;
100             context.moveTo(0,y);
101             context.lineTo(a_canvas.width, y);
102           }*/
103
104             //划横线
105             context.moveTo(0,realheight);
106             context.lineTo(realwidth,realheight);
107
108
109             //画竖线
110           context.moveTo(0,20);
111            context.lineTo(0,realheight);
112           context.lineWidth = 1;
113           context.strokeStyle = "black";
114           context.stroke();
115
116
117           var max_v =0;
118
119           for(var i = 0; i<data.length-1; i++){
120              max_v =data[i];
121           }
122           max_v = max_v * 1.1;
123           // 将数据换算为坐标
124           var points = [];
125           for( var i=0; i < data.length; i++){
126             var v= data[i];
127             var px = cell_width * (i +1);
128             var py = realheight - realheight*(v / max_v);
129             //alert(py);
130             points.push({"x":px,"y":py});
131           }
132
133           //绘制坐标图形
134           for(var i in points){
135             var p = points[i];
136             context.beginPath();
137             context.fillStyle="green";
138             context.fillRect(p.x,p.y,15,realheight-p.y);
139
140             context.fill();
141           }
142           //添加文字
143           for(var i in points)
144           {  var p = points[i];
145             context.beginPath();
146             context.fillStyle="black";
147             context.fillText(data[i], p.x + 1, p.y - 15);
148              context.fillText(xinforma[i],p.x + 1,realheight+12);
149              context.fillText(‘省份‘,realwidth,realheight+12);
150              context.fillText(‘店面数量‘,0,10);
151         }
152       }
153
154 //-->
155 </script>
时间: 2024-07-31 14:33:07

记一次非常无语的生成柱状图,js,ecshop。的相关文章

Java读取数据库数据生成柱状图

此案例是用swing显示数据的.需要引入jfreechart相关包,不同版本可能包不相同,本人用的是 此案例在ssi框架下会报错,不用框架就没问题. Java后台逻辑代码: public class BarChart { ChartPanel frame1; public BarChart() { CategoryDataset dataset = getDataSet(); JFreeChart chart = ChartFactory.createBarChart3D("水果",

t4模板生成 _references.js 文件

t4模板功能: 指定目录,自动生成 _references.js 文件 相关文件说明: _references.js 实现js智能提示. 注意事项: hostspecific="true" <#@ template debug="false" hostspecific="true" language="C#" #> projectDir=Host.ResolveAssemblyReference("$(P

winform WebBrowser控件中,cs后台代码执行动态生成的js

很多文章都是好介绍C# 后台cs和js如何交互,cs调用js方法(js方法必须是页面上存在的,已经定义好的),js调用cs方法, 但如果想用cs里面执行动态生成的js代码,如何实现呢? 思路大致是这样的,cs动态插入js到html上,cs执行html插入的js方法代码. 封装好的方法: /// <summary> /// webbrowser执行脚本 /// </summary> /// <param name="web">传入WebBrowser 

dotnetcharting 生成柱状图,饼图等统计图

DotNetCharting是一个非常棒的.NET图表控件,对中文支持非常好,而且操作方便,开发快速,既有for webform 也有for winform的,而且.net1.1和2.0都有支持.官方地址是http://www.dotnetcharting.com/ 简单使用方法: 1.首先要搞定帮助文档:从官方网站下载解压后把dotnetcharting4.2for1.x目录设置成虚拟目录,.net1.1的环境,然后就可以看帮助示例了.2.把\bin\dotnetCHARTING.dll添加到

MWeb - 专业的 Markdown 写作、记笔记、静态博客生成软件

专业的 Markdown 写作支持 极简 UI.Dark Mode.漂亮的 Markdown 语法高亮.列表缩进优化,提供 5 种主题选择. 除了支持基本的 Markdown 语法外,还支持大量 Markdown 扩展语法:Table.TOC.MathJax.Fenced code block.任务列表(Task lists).顺序图和流程图.Footnote 等. 支持 Typewriter Scrolling(打机机滚动模式)View - Typewriter Scrolling. 支持发布

C#生成柱状图,包括刻度,刻度值.

http://blog.csdn.net/xyz7885696/article/details/2482842 using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;

Thinkphp+ECharts生成柱状图

1.首先进ECharts官网下载echarts.js 点击下载,结合TP5讲解,主要代码在js里面,更多请到ECharts官网 2.引进echarts.js <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>销售柱状图</title> <!-- 引入ECharts文件 --> <script type="text/ja

canvas 根据数组生成柱状图

canvas柱状图 var arr = [ { id: 1001, price: 100 }, { id: 1002, price: 150 }, { id: 1003, price: 200 }, { id: 1004, price: 70 }, { id: 1005, price: 300 } ]; var gap = 20; var canvas = document.querySelector("canvas"); var ctx; init(); function init(

devexpress中用ChartControl生成柱状图

在界面中拖入一个ChartControl控件,然后添加一个simplebutton控件.在simplebutton控件的click事件中加入如下代码: private void button1_Click(object sender, EventArgs e)        {            //数据源            chartControl1.DataSource = CreateChartData();            //数据成员            chartCo