PHP pchart是一个非常强大的图表库,它可以很方便地生成各种图表,如线图、柱状图、饼图等等。虽然pchart自带了基本的中文支持,但中文的问题一直是让使用者头疼的难题。
在pchart中使用中文,需要注意以下几点:
首先,需要在生成图表之前设置字体库,如下所示:
其次,在使用中文时,需要使用unicode编码,如下所示:
最后,对于有些需要换行的文字,需要手动加上
标签,如下所示:
实际上,pchart的中文支持还是非常稳定的。下面我们就来举几个例子来说明pchart如何使用中文。
例子一:线图
例子二:饼图
例子三:柱状图
经过上面三个例子的学习,相信你已经基本掌握了pchart中文支持的方式和方法。虽然pchart的中文支持不是非常完美,但是通过合理的方法和技巧,我们还是可以很好地解决这个问题。
在pchart中使用中文,需要注意以下几点:
首先,需要在生成图表之前设置字体库,如下所示:
// 设置字体 $font_file = './path/to/font/simhei.ttf'; $graph->setFontProperties([$font_file, 10]);
其次,在使用中文时,需要使用unicode编码,如下所示:
$value = chr(hexdec('260E')); //unicode编码,表示电话图标 $graph->drawText($value, $x, $y);
最后,对于有些需要换行的文字,需要手动加上
标签,如下所示:
$label = "这是一段需要换行的文字\n我来测试下<br>这里应该换行"; $graph->drawText($label, $x, $y);
实际上,pchart的中文支持还是非常稳定的。下面我们就来举几个例子来说明pchart如何使用中文。
例子一:线图
// 数据源 $data = [ '1月' => 10, '2月' => 30, '3月' => 20, '4月' => 40, '5月' => 50 ]; <br> // 初始化图表 $graph = new Graph(600, 400); $graph->setMargin(50, 30, 30, 50); <br> // 设置字体 $font_file = './path/to/font/simhei.ttf'; $graph->setFontProperties([$font_file, 10]); <br> // 添加线图 $line = new LinePlot(array_values($data)); $line->setFillColor('azure'); $line->setLegend('销售额'); $line->setLineStyle(2); <br> // 设置X轴显示 $labels = array_keys($data); $axis = new DateScaleAxis(); $axis->setDateFormat('M'); $axis->setTickPosition(AXIS_POSITION_BOTTOM); $axis->setLabels($labels); <br> // 将线图添加到图表 $graph->add($line); $graph->xaxis->setTickLabels($labels); $graph->xaxis->setTickLabelAngle(45); $graph->xaxis->setScale($axis); <br> // 保存图表到文件 $graph->createImage('./path/to/image.png');
例子二:饼图
// 数据源 $data = [ '进口' => 30, '出口' => 40, '内销' => 50, '外销' => 60 ]; <br> // 初始化图表 $graph = new PieGraph(600, 400); $graph->setMargin(50, 30, 30, 50); <br> // 设置字体 $font_file = './path/to/font/simhei.ttf'; $graph->setFontProperties([$font_file, 10]); <br> // 添加饼图 $pie = new PiePlot(array_values($data)); <br> // 设置饼图样式 $pie->setTheme(new MyTheme()); $pie->setLegendPosition(LEGEND_POSITION_RIGHT); $pie->setLabelType(PIE_VALUE_PER); <br> // 将饼图添加到图表 $graph->add($pie); <br> // 保存图表到文件 $graph->createImage('./path/to/image.png');
例子三:柱状图
// 数据源 $data = [ '1月' => ['进口' => 30, '出口' => 40, '内销' => 50, '外销' => 60], '2月' => ['进口' => 50, '出口' => 60, '内销' => 70, '外销' => 80], '3月' => ['进口' => 60, '出口' => 70, '内销' => 80, '外销' => 90], '4月' => ['进口' => 80, '出口' => 90, '内销' => 100, '外销' => 110], '5月' => ['进口' => 100, '出口' => 110, '内销' => 120, '外销' => 130] ]; <br> // 初始化图表 $graph = new Graph(600, 400); $graph->setMargin(50, 30, 30, 50); <br> // 设置字体 $font_file = './path/to/font/simhei.ttf'; $graph->setFontProperties([$font_file, 10]); <br> // 添加柱状图 $bar = new BarPlot(array_values($data['1月'])); $bar->setLegend('1月'); $bar->setFillColor('azure'); <br> // 遍历月份添加柱状图 foreach ($data as $month => $values) { $bar = new BarPlot(array_values($values)); $bar->setLegend($month); $graph->add($bar); } <br> // 设置X轴显示 $labels = array_keys($data['1月']); $axis = new TextAxis($labels); $axis->setTickPosition(AXIS_POSITION_BOTTOM); <br> // 将柱状图添加到图表 $graph->xaxis->setTickLabels($labels); $graph->xaxis->setTickLabelAngle(45); $graph->xaxis->setScale($axis); <br> // 保存图表到文件 $graph->createImage('./path/to/image.png');
经过上面三个例子的学习,相信你已经基本掌握了pchart中文支持的方式和方法。虽然pchart的中文支持不是非常完美,但是通过合理的方法和技巧,我们还是可以很好地解决这个问题。