libchart.php,php利用Libchart库绘图

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.饼状图

//Pie chart demonstration (image not saved to disk)

include "../libchart/classes/libchart.php";

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

$chart = new PieChart(500, 260);

$dataSet = new XYDataSet();

$dataSet->addPoint(new Point("新浪微博", 80));

$dataSet->addPoint(new Point("腾讯微博", 50));

$dataSet->addPoint(new Point("网易微博", 10));

$chart->setDataSet($dataSet);

$chart->setTitle("本数据仅用于内部测试使用,不表示实际情况");

$chart->render();

?>

2.横向的柱状图

//Horizontal bar chart demonstration(image not saved to disk)

include "../libchart/classes/libchart.php";

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

$chart = new HorizontalBarChart(600, 170);

$dataSet = new XYDataSet();

$dataSet->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.纵向的柱状图

//Vertical bar chart demonstration

include "../libchart/classes/libchart.php";

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

$chart = new VerticalBarChart();

$dataSet = new XYDataSet();

$dataSet->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.线性图

// Line chart demonstration(image not saved to disk)

include "../libchart/classes/libchart.php";

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

$chart = new LineChart();

$dataSet = new XYDataSet();

$dataSet->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中调用如下:

%E7%94%9F%E6%88%90%E5%9B%BE%E7%89%87%E7%9A%84%E8%B7%AF%E5%BE%84

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值