4.4.2.4 绘制整个图表

728 篇文章 1 订阅
349 篇文章 0 订阅

4.4.2.4 绘制整个图表

 

在讨论第二个绘图函数之前,我们先看一下如何把内容组织到一起。图 4.2 分别显示每个层次:我们已经写好了代码绘制左图的代码,还差绘制右图标签的函数。

图 4.2 绘制图表的两个阶段:第一阶段使用 drawPieSegment 函数(左),第二阶段使用 drawLabel 函数(右图)。图表显示的是 1900 年世界人口分布情况。

 

绘制图表的代码,首先从文件加载数据,然后,进行处理,与[前面讨论的]控制台程序相同。只是现在数据不输出到控制台,面是使用前面介绍的函数,绘制图表。可以看到,在清单 4.10 中是绘图函数 drawChart 的内容。

 

清单 4.10 绘制图表(F#)

let drawChart(file) =

  letlines = List.ofSeq(File.ReadAllLines(file)) |  加载,

  letdata = processLines(lines)             |  处理数据

  letsum = float(calculateSum(data))        |

 

  letpieChart = new Bitmap(600, 400)    |  创建绘图用的

  letgr = Graphics.FromImage(pieChart)  |  位图和对象

  gr.Clear(Color.White)

  drawStep(drawPieSegment,gr, sum, data)  [1]

  drawStep(drawLabel,gr, sum, data)    [2]

 

  gr.Dispose()  <-- 最后,绘制

  pieChart

 

函数的参数为 CSV 文件名,返回在内存中(in-memory)饼图的位图。在代码中,我们首先加载文件,用已有的 processLines 和 calculateSum 函数进行处理;然后,绘制图表,在最后一行,返回创建的位图,作为函数的结果。

要绘制所有内容,首先要创建一个 Bitmap 对象,和一个相关联的 Graphics 对象。我们在前面所有的函数中,都是用 Graphics 来绘图的,因此,这个对象创建后,就可以用白色背景填充位图,再用 drawStep 函数绘制图表。第一次调用[1],使用 drawPieSegment绘制饼图,第二次调用[2],使用 drawLabel绘制文本标签。可以尝试注释掉其中的一行,只绘制出一个阶段的内容,得到与图 4.2 相同的结果。我们还没有实现 drawLabel 函数,因为我们想首先展示整个绘图的过程,现在已经完成了这部分的应用程序了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值