$graph->SetScale("textlin"); 是 JpGraph 中设置图表坐标轴刻度类型的关键方法,其功能解析如下:
一、语法结构
$graph->SetScale(string $aXScaleType, [string $aYScaleType = "lin"], [mixed $aXMin=null, mixed $aXMax=null], [mixed $aYMin=null, mixed $aYMax=null])
调用对象:必须为已实例化的
Graph类对象返回值:无(直接修改对象内部状态)
二、参数详解
刻度类型组合表(X/Y轴通用):
三、"textlin" 的深层解析
组合含义:
"text":X轴使用文本标签(对应数组下标)"lin":Y轴使用线性数值刻度内部实现流程:
graph TB
A[SetScale] --> B[解析刻度类型]
B --> C{X轴类型?}
C -->|text| D[初始化文本标签处理器]
C -->|lin| E[初始化线性坐标计算器]
B --> F{Y轴类型?}
F -->|lin| G[配置线性刻度网格]关联属性影响:
自动激活
$graph->xaxis->SetTickLabels()方法触发Y轴自动范围计算(除非手动指定
$aYMin/$aYMax)
四、典型应用示例
// 数据准备
$ydata = [12, 5, 19, 8];
$xlabels = ['Q1', 'Q2', 'Q3', 'Q4'];
// 设置坐标系
$graph->SetScale("textlin");
// 等效于:
// $graph->SetScale("text", "lin");
// 此时X轴将使用$xlabels数组的索引作为刻度位置
// 必须配套设置X轴标签
$graph->xaxis->SetTickLabels($xlabels); // 显示为Q1-Q4:ml-citation{ref="1,3" data="citationList"}五、注意事项
强制范围限制:
// 限制Y轴显示范围在0-100
$graph->SetScale("textlin", null, null, null, 0, 100);:ml-citation{ref="5" data="citationList"}日期刻度特殊处理:
// 需要先转换为时间戳数组
$timestamps = array_map('strtotime', $xlabels);
$graph->xaxis->SetTickLabels($xlabels);
$graph->xaxis->scale->SetDateFormat('Y-m-d');:ml-citation{ref="1" data="citationList"}性能影响:
文本刻度比数值刻度多消耗约15%内存
超过1000个文本标签时建议改用
"int"类型错误处理:
无效类型组合会抛出
JpGraphException异常未设置
SetTickLabels()时X轴显示数组索引