抄来之作!饼图和直方图的制作,稍后会提供我的作品,请各位大侠指正!

饼图

在 Web 页面中使用图表(chart)表现数据

      在 Web 编程中经常需要做的一件事情就是把从数据库中查出的数据(数字)使用图表(chart)的形式在页面中表现出来。下面我们简单总结几种常见的做法。

1. 如果图表的样式只需要柱形图(bar)就可以的话,有一种非常简单,偷懒的方法,即使用某些 tag 的 width 属性来表现就可以。举例如下:

<IMG HEIGHT=5 WIDTH=<%= 数值 %> SRC=http://www.163design.net/a/q/"小方块.gif">

用这种思路,要是不嫌难看的话,你干脆用 for 循环控制 * 号的显示个数也未尝不可。;-)
如果想比较美观的话,可以把 CSS 设计的好一些,再和 DHTML 结合。

这种方法的一个完整的例子见:
http://www.microsoft.com/workshop/database/datavis/datavis.asp

2. 一些老兄喜欢直接把图片放在数据库中,那我们看看怎么把它们调出来。
(如果这些图片正好是图表的话,我就不算离题。;-))
IIS 的在线帮助中有这么个例子:
http://localhost/IIsSamples/SDK/asp/docs/CodeBrws.asp?source=/IIsSamples/SDK/asp/Database/Blob_VBScript.asp
其核心代码:
<%
' 声明回传的是 Gif 文件,不是平常的 HTML
Response.Buffer = TRUE
Response.ContentType = "image/gif"
' 连数据库
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "DSN=LocalServer;UID=sa;PWD=;DATABASE=pubs"
' 查出存好的图片
Set oRs = oConn.Execute("SELECT logo FROM pub_info WHERE pub_id='0736'")
' 取值要显得专业些 ;-)
PicSize = oRs("logo").ActualSize
Pic = oRs("logo").GetChunk(PicSize)
' 再次强调回传的是 gif 图片,view source 是什么都看不到的
Response.BinaryWrite Pic
Response.End
%>

好,仔细看注释的老兄(我可没这好习惯;-))会问:这支程序 mypic.asp 在浏览器中最后的效果
相当于 mypic.gif,我想要有文字怎么办?
很简单,写个 web page 中间加上 <img src=mypic.asp> 不就完了。 ;-)

3. 还有些老兄更甚,这些大侠的机器多半是 8 CPU 的 P III,他们使用 server-side 软件,
比如 excel,现做一个 chart 图片,然后以 gif 格式传给浏览器。多见于 CGI 高手。;-)
我们来看一个这样的 cool demo。
核心代码:
<%
Set excel = GetObject("","Excel.Application")
If Err.Number <> 0 Then
Response.Write("Could not create Excel document. " + Err.Description+"")
Err.Clear
End If
excel.DisplayAlerts = False
Set workbooks = excel.Workbooks
Set wb = workbooks.Add
Set sheets = wb.Sheets
Set wsTotal = sheets.Add( ,,,-4167)
wsTotal.Name = "Total_Expenses"
Set range = wsTotal.Range("B1")
range.FormulaR1C1 = "1"
Set range = wsTotal.Range("C1")
range.FormulaR1C1 = "2"
Set range = wsTotal.Range("D1")
range.FormulaR1C1 = "3"

wsTotal.Activate
wsTotal.Select

Set range = wsTotal.Range("B1:D1")
excel.Charts.Add
excel.ActiveChart.ChartType = 51
excel.ActiveChart.SetSourceData range,2

excel.ActiveChart.Export "d:\test\exceltest"+".gif","GIF"

Response.Write "<img src=http://www.163design.net/a/q/d:/test/exceltest.gif>"
%>

真正的懒人在写这段代码时还利用 excel 的 vba(:-P),绝对代码快枪手,可是运行效率----呸!;-)

4. 好了,该看一看专业运动员的做法了----使用 chart control。
哪种控件更好大家见仁见智,(比如有些老兄喜欢 Java Applets ;-) 还有些老兄喜欢自己用 C/C++ 开发)为简化起见,这里我推荐微软(;-))的----Office 2000 Web Component。;-)

在前面一文中我介绍过控件与数据结合的几种方式,我们来一一分析用 Excel 2000 的 chart control 如何实现。

A. 逐行赋值法
Excel 2000 chart control 有两种赋值方法:数组,字符串。
数组法:
代码示例:
----------------------------------
<object id=ChartSpace1 classid=CLSID:0002E500-0000-0000-C000-000000000046 style="width:100%;height:350"></object>

<script language=vbs>
Sub Window_OnLoad()
Dim categories(3), values(3)
' 4 个分类
categories(0) = "White"
categories(1) = "Black"
categories(2) = "Asian"
categories(3) = "Latino"

' 准备活动 ;-)
ChartSpace1.Clear
ChartSpace1.Charts.Add
Set c = ChartSpace1.Constants

' 添加三个系列的值
ChartSpace1.Charts(0).SeriesCollection.Add
ChartSpace1.Charts(0).SeriesCollection.Add
ChartSpace1.Charts(0).SeriesCollection.Add

' 锦上添花 ;-)
ChartSpace1.Charts(0).SeriesCollection(0).Caption = "Perot"

' 设置
ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimCategories, c.chDataLiteral, categories

values(0) = 0.2 ' The White value.
values(1) = 0.06 ' The Black value.
values(2) = 0.17 ' The Asian value.
values(3) = 0.13 ' The Latino value.

ChartSpace1.Charts(0).SeriesCollection(0).Caption = "Perot"
ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimCategories, c.chDataLiteral, categories
ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimValues, c.chDataLiteral, values

' Series two contains election data for Clinton.
' Update the values array, then set the chart data.
values(0) = 0.38 ' The White

时间: 2024-10-26 06:07:52

抄来之作!饼图和直方图的制作,稍后会提供我的作品,请各位大侠指正!的相关文章

excel 2013直方图怎么制作

  excel 2013 直方图制作教程: 直方图制作步骤1:如图所示,选中数据区域--点击插入--推荐的图表--簇状柱形图. 直方图制作步骤2:通过调整把簇状柱形图变成直方图. 直方图制作步骤3:如图,双击(柱子)--进入设置数据点格式--系列选项--分类间距(调整到0) 直方图制作步骤4:如图所示,点击图表工具--格式--垂直(值)轴--设置所选内容格式,进行直方图美化. 直方图制作步骤5:主要包括以下四方面:1.垂直(值)轴,2.垂直(值)轴主要网格线,3.水平(类别)轴,4.添加数据标签

为公测作准备TERA今日下午3时起提供预选服务

2月30日消息,韩国次世代MMORPG新作<TERA>今天下午3时起至1月9日间开启预选服务. 预选服务是<TERA>韩国公测前,玩家预先选择服务器.种族.职业.外貌并设定角色名的一种服务,可体验到特性多样的种族和角色设定.玩家登录预选服务页面,可清楚地查看到每个服务器的选择现况,籍此避免造成某部分服务器的人口拥挤负荷,以便公测时能实现顺畅的游戏环境. 通过此时生成的游戏角色信息,公测开始前玩家便可进行"好友登录".同时,预选服务期间<TERA>还特

网上作品防抄一法

有人说:"上了网的作品就没有版权",这话虽有些偏激,但也不无道理.毕竟上了网的作品,特别是普通文字作品更容易被人转抄,只要点击Ctrl+C→Ctrl+V就行了.要在网上发布作品,又不想被人随意转抄看起来似乎是一个两难的选择.现在提供一种解决上述问题的办法,希望能起到抛砖引玉的效果.其解决办法所用的工具就是Macromedia的网上动画制作软件Flash 5. 下面是使用Flash 5来保护作品的步骤: 1.新建一个Flash 5文档,把Layer 1改名为protect: 2.指定第1

excel怎么制作双层饼图

  excel怎么制作双层饼图?我们都知道饼图反映的是部分占总体的比例关系,在使用过程中可以根据自己的需要进行制作,有些时候为了更加凸显数据的比例关系,需要制作双层饼图,那么如何制作双层饼图呢,下面就为大家详细介绍一下,来看看吧. 步骤 启动excel2003,打开事先准备好的数据,选择单元格b3,执行插入-函数命令,选择数据区域d3:d8后点击确定按钮,七年级总人数就计算出来啦,同样道理计算出八年级和九年级人数. 选择a3:b5这以数据区域,执行插入-图表命令,在弹出的图表向导-图表属性中选择

ps非主流梦幻签名图制作教程

这次的教程与以前有一点不一样,你看标题就知道了带有梦幻的效果哦,我们当然会准备很多不同的签名会要用到的素材哦,下面来看看制作过程吧. 效果图片,还不错吧.是不是有梦幻的效果呢?好了下面接着我们要作的事情就是来制作签名图哦,先准备一些素材吧. 这张星空的素才呼 好了我们的素材都准备好了最后就是开始制作签名图了.

如何在物理引擎的碰撞计算中得到碰撞作用线?

问题描述 如何在物理引擎的碰撞计算中得到碰撞作用线?初次接触制作物理引擎,看了一本叫做<游戏开发物理学>的书,这本书关于公式给的很好但是要知道碰撞作用线,就是碰撞时撞击的边的垂线,苦思不知道怎么求,希望能给出算法步骤或原理,谢了. 解决方案 解决方案二:没做过碰撞处理,帮你顶解决方案三:顶求帮助啊...有急用.解决方案四:碰撞边的过碰撞点的中垂线,和物体碰撞速度方向夹角的另一边的相同夹角的逆向方向,复杂一点要计算能量损失和摩擦损失的角度,以及碰撞边的非平滑情况还有运动物体的角度,但是基本来说,

北美票房:《超级8》非神作《宿醉2》劲破两亿

本周排名电影名称北美票房累计票房1<超级8>Super 83700万3800万2<X战警:第一课>X-Men: First Class2500万9889万3<宿醉2>The Hangover 2 1850万2.16亿4<功夫熊猫2>Kung Fu Panda 21663万1.26亿5<加勒比海盗4>Pirates of the Caribbean:On Stranger Tides1084万2.08亿6<伴娘>bridesmaid10

直方图中最大矩形面积

Largest Rectangle in Histogram 直方图中最大矩形面积 一个直方图是由许多矩形组成,在给定的直方图中找出最大的矩形面积.为了简化问题,假定所有矩形宽度都为1个单位. 例如,下面的直方图中有7个矩形,高度分别是(6,2,5,4,5,2,6).最大的矩形面积是12(如下图所示,最大矩形面积用红色方框标出) 下面给出的解决方法时间复杂度为O(n).矩形面积的计算公式为底*高.对于直方图中的每个矩形'x'(例如图中高度为6,2或5的矩形)以该矩形的高度为高(因为在直方图中最大

Visual C++中操纵MS Word 123

使用VC编程来操纵Office.你可以实现诸如:Word文件打印.传送数据到 Word文档.发送E-MAIL.自动产生表格.Excel数据统计.圆饼图,直方图显示 .自动报表生成.播放幻灯.doc,txt,HTML,rtf文件转换.中文简繁体转换 .拼音或笔画排序......只要是Office能够实现的功能,都可以在你写的程序中 调用.仔细阅读下面的说明,并下载源文件进行参考,你就可以一步一步地掌握 这个技术.祝朋友们学习快乐. 一.概念 Microsoft 的 Office 产品中,都提供了O