XML

如何生成网志信息统计图形

前几天从keso的网志链接过去后看到一篇文字“Keso博客发布时间的统计分析”,图形画得比较有意思。我考虑了一下,那个统计图(至少)有两种实现方式:普通用户的方式和程序员的方式。1

(以下的讨论以本站网志和本站网志使用的Serendipity系统为例)

一、普通用户的方式:Excel生成

首先,将网站的网志信息导出来。例如,Serendipity网志系统就有“文字导出”(Export entries)的功能,能够把全部文字导出到RSS中(XML格式)。

除了xls文件格式外,Microsoft Excel还能够读入多种文件格式,例如csv格式和XML格式。那么,就用Excel打开这个XML导出文件。2

把相关的信息在Excel中稍作处理,然后使用Excel的画图功能画图。在这个过程中,(可能)需要使用一些Excel的相关函数处理数据,例如datevalue()、left()等。

这个方法适用于大多数(颇为)熟悉Excel使用的用户,不需要什么编程操作。右图就是使用此方法制作的本站2003年7月到现在所有的网志文字发布时间的统计信息。3

二、程序员的方式:PHP生成

显然,用PHP画图需要用到用于画图的GD库,还需要相应的字体支持。

在经典的PHP函数库网站phpclasses搜索,很难发现让人满意的第三方图形类库用于画图。但其实,PHP自带的PEAR函数库就具有极强的画图功能,不需要另外找第三方函数库。

我以往极少采用PEAR写程序。前几天翻了翻,好像PEAR提供的具体使用文档很少。不管怎样,还是把如何用PEAR画图的方法简单讲一下(,免得自己以后忘了)。4

1. (至少)需要用到PEAR中的三个Image库:Image_Graph,Image_Canvas,Image_Color。下载它们并放到适当位置。

2. (一般来讲)要把PEAR所在位置加到php.ini所定义的incude_path中。

3. 需要一些TrueType的字体。“PEAR/Image/Canvas/Fonts/fontmap.txt”这个文件定义了相关的字体(文件)名字。(从网上或服务器上)找到这些字体文件,把这些字体文件放到系统某个位置。

4. 在“PEAR/Image/Canvas.php”文件中,定义常量“IMAGE_CANVAS_SYSTEM_FONT_PATH”。此常量用来指定字体文件所在位置。

5. 参考“PEAR/Graph/docs”和“Graph/tests”下的多个画图的例子,挺简单的。这里就给两个和本文提到的离散图相关的例子(见右图):

5.1 “PEAR/Graph/docs/examples/double_category_axis.php”。

5.2 “PEAR/Graph/docs/examples/plot_scatter.php”。

在Serendipity中,可以使用方法二开发相关的图形统计插件。Deminy觉得自己写这个太浪费时间了,就免了。相信以后肯定会有人写的。

[注1] 上面提到的文章的作者使用的是一个叫做Swiff Chart软件制作统计图。

[注2] 如果你直接用Excel打开该XML文件困难的话,可能是因为缺乏必要的XML Schema信息。这时候,综合使用Excel的mapping功能,便可以将XML中的指定数据(pubDate)导入。

[注3] 以后有时间的话我会做具体数据的具体分析。

[注4] 此处相关代码和实现方式测试于3月24日下午。

类别: