资讯专栏INFORMATION COLUMN

php利用Libchart库绘图

KitorinZero / 1749人阅读

摘要:是一个免费绘制图表的库,很好用,由于是老外写的,所以对中文支持不好,在图表里显示为乱码。

Libchart是一个免费绘制图表的PHP库,很好用,由于是老外写的,所以对中文支持不好,在图表里显示为乱码。
官网地址:https://naku.dohcrew.com

乱码解决办法:
1、自己写的使用Libchart库生成图表的php文件以utf-8编码保存;
2、找几个中文字体库,比如华文行楷、宋体等等,复制到libchartfonts目录下;
3、修改libchartclasses目录下的text.php文件
第47、48行

$this->fontCondensed = dirname(__FILE__) . "/../fonts/DejaVuSansCondensed.ttf";
$this->fontCondensedBold = dirname(__FILE__) . "/../fonts/DejaVuSansCondensed-Bold.ttf";
改为
$this->fontCondensed = dirname(__FILE__) . "/../fonts/msyh.ttf";  #去自己的fonts目录把微软雅黑拖到程序目录下就好了
$this->fontCondensedBold = dirname(__FILE__) . "/../fonts/msyhbd.ttf";

去掉版权信息:
将libchartclassesviewchartChart.php 第61行

$this->plot->setLogoFileName(dirname(__FILE__) . "/../../../images/PoweredBy.png");
屏蔽掉或者替换成相应的Logo图片。

简单的使用示例:
1.饼状图

addPoint(new Point("新浪微博", 80));
$dataSet->addPoint(new Point("腾讯微博", 50));
$dataSet->addPoint(new Point("网易微博", 10));
$chart->setDataSet($dataSet);
$chart->setTitle("本数据仅用于内部测试使用,不表示实际情况");
$chart->render();
?>

2.横向的柱状图

addPoint(new Point("新浪微博", 80));
$dataSet->addPoint(new Point("腾讯微博", 50));
$dataSet->addPoint(new Point("网易微博", 10));
$chart->setDataSet($dataSet);
$chart->getPlot()->setGraphPadding(new Padding(5, 30, 20, 140));
$chart->setTitle("本数据仅用于内部测试使用,不表示实际情况");
$chart->render();
?>

3.纵向的柱状图

addPoint(new Point("Jan 2013", 273));
$dataSet->addPoint(new Point("Feb 2013", 421));
$dataSet->addPoint(new Point("March 2013", 642));
$dataSet->addPoint(new Point("April 2013", 800));
$dataSet->addPoint(new Point("May 2013", 1200));
$dataSet->addPoint(new Point("June 2013", 1500));
$dataSet->addPoint(new Point("July 2013", 2600));
$chart->setDataSet($dataSet);
$chart->setTitle("本数据仅用于内部测试使用,不表示实际情况");
$chart->render();
?>

4.线性图

addPoint(new Point("05-01", 273));
$dataSet->addPoint(new Point("05-02", 421));
$dataSet->addPoint(new Point("05-03", 642));
$dataSet->addPoint(new Point("05-04", 799));
$dataSet->addPoint(new Point("05-05", 1009));
$dataSet->addPoint(new Point("05-05", 1405));
$dataSet->addPoint(new Point("05-07", 1820));
$dataSet->addPoint(new Point("05-08", 2511));
$dataSet->addPoint(new Point("05-09", 2832));
$dataSet->addPoint(new Point("05-10", 3550));
$dataSet->addPoint(new Point("05-11", 4143));
$dataSet->addPoint(new Point("05-12", 4715));
$chart->setDataSet($dataSet);
$chart->setTitle("本数据仅用于内部测试使用,不表示实际情况");
$chart->render();
?>

以上示例是libchart最简单的调用方式,如果需要在磁盘上生成图片,供其他地方调用,方法很简单:
只需要将

header("Content-type: image/png");

屏蔽掉,并且将

$chart->render();

修改成

$chart->render("生成图片的路径");

HTML中调用如下:

           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30699.html

相关文章

  • Python如何利用pandas读取csv数据并绘图

      小编写这篇文章的一个主要目的,主要是给大家去做一个解答,解答的内容主要是Python相关知识,比如说,会给大家讲解怎么样去利用Python pandas去做一个读取,读取的是csv数据,然后将这些数据去做一个绘图处理,具体内容下面给大家详细解答。  如何利用pandas读取csv数据并绘图  导包,常用的numpy和pandas,绘图模块matplotlib,  importmatplotli...

    89542767 评论0 收藏0
  • 从0到1:微信小程序自选股项目回忆录

    摘要:小程序自选股项目团队在长达五个月的时间里经历了太多不为人知的故事,不知通宵了多少个夜晚,只为等待小龙宣布号小程序正式发布的到来。第一次被微信开放平台开发二组团队小程序项目团队当小白鼠各种实验新特性。。 导语:我很喜欢小龙的一句话,微信因你而变。是的,把事情做到极致的时候,这个世界就会因你而变。 小程序自选股项目团队在长达五个月的时间里经历了太多不为人知的故事, 不知通宵了多少个夜晚,只...

    feng409 评论0 收藏0
  • 《Webkit技术内幕》之页面渲染过程

    摘要:文章同步到技术内幕之页面渲染过程最近拜读了传说中的技术内幕一书,有很大收获,尤其是对页面渲染有了较深的认识。解析语法分析,基于词法解释器生成的新标记,构建成抽象语法树,解析器尝试将其与某条语法规则进行匹配。 文章同步到github《Webkit技术内幕》之页面渲染过程 最近拜读了传说中的《Webkit技术内幕》一书,有很大收获,尤其是对页面渲染有了较深的认识。由于功力有限,而且书中设...

    vvpvvp 评论0 收藏0
  • 《Webkit技术内幕》之页面渲染过程

    摘要:文章同步到技术内幕之页面渲染过程最近拜读了传说中的技术内幕一书,有很大收获,尤其是对页面渲染有了较深的认识。解析语法分析,基于词法解释器生成的新标记,构建成抽象语法树,解析器尝试将其与某条语法规则进行匹配。 文章同步到github《Webkit技术内幕》之页面渲染过程 最近拜读了传说中的《Webkit技术内幕》一书,有很大收获,尤其是对页面渲染有了较深的认识。由于功力有限,而且书中设...

    adam1q84 评论0 收藏0
  • 《Webkit技术内幕》之页面渲染过程

    摘要:文章同步到技术内幕之页面渲染过程最近拜读了传说中的技术内幕一书,有很大收获,尤其是对页面渲染有了较深的认识。解析语法分析,基于词法解释器生成的新标记,构建成抽象语法树,解析器尝试将其与某条语法规则进行匹配。 文章同步到github《Webkit技术内幕》之页面渲染过程 最近拜读了传说中的《Webkit技术内幕》一书,有很大收获,尤其是对页面渲染有了较深的认识。由于功力有限,而且书中设...

    forsigner 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<