淘先锋技术网

首页 1 2 3 4 5 6 7
PHP 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的中文支持不是非常完美,但是通过合理的方法和技巧,我们还是可以很好地解决这个问题。