您可以创建一个“最小”值,但前提是您愿意分叉库并进行一些更改。
游戏计划
最简单、最直接的方法是创建一个新选项,我将其命名为FixedMin。当且仅当提供此新选项(并且满足非自动分段的其他标准)时,您才能达到您想要的效果。
如果您希望在不提供SegmentHeight、Segments 和FixedMax 的情况下生成最小值,则还需要修改pImage::computeScale,以便在未提供这些配置值时生成它们。
我们需要做三处改变:
- 创建一个名为
FixedMin 的新配置选项
- 调整值的位置
- 调整标签的文字
让我们编码
drawRadar 方法保存在class/pRadar.class.php 中。打开它。让我们来看看我们的游戏计划。
首先,让我们添加配置选项。我会将它与其他(第 ~38 行)一起添加,如下所示:
$FixedMin = isset($Format["FixedMin"]) ? $Format["FixedMin"] : 0;
让FixedMin 默认为0,因为这是默认的 pChart 行为。
第二,我们需要以某种方式欺骗 pChart 重新定位这些较大的值,就好像它们更小,以适应 FixedMin 创建的偏移量。
我们可以在函数计算绘图位置(第 ~319 行)的地方做到这一点。找到循环foreach($DataS["Data"] as $Key => $Value)(~328 行)。在这里,我们将通过在循环顶部添加这一行来修改$Value:
$Value -= $FixedMin; // Let's offset the perceived value by our new minimum
第三,我们需要改变轴标签的文本值。在$DrawAxisValues 包含的条件内,您会发现这行代码(第~255 行):
$Label = ($j * $SegmentHeight)
这很好用;对于每个段,它会生成一个段乘以高度的标签(例如,20 个单位的 4 个段应该生成 4 个标签:20、40、60、80)。但它不适用于我们的FixedMin。让我们重用偏移量。在这种情况下,我们会增加偏移量,以产生最小值的错觉。用这一行替换该行:
$Label = ($j * $SegmentHeight) + $FixedMin;
回顾
我们为最小分段创建了一个新的配置变量;对于每个值,我们减去最小值(或偏移量);并通过添加最小值(或偏移量)来重新调整轴标签。
注意事项
我们只修改了雷达图;不会影响其他图表类型。 不要尝试使用低于配置最小值的数据。这样做的危险可能是作者没有包含此选项的原因。
展示和讲述
我无权访问您的数据集,因此我使用了 pChart 示例并修改了“应用程序审查”示例,使所有分数都在 20 到 40 之间。
// FixedMin set to 0, "default" behavior
$Options = array(
'SegmentHeight' => 20,
'Segments' => 2,
'FixedMax' => 40,
'FixedMin' => 0, // And so on...
正如预期的那样,现在让我们看看我们的新代码...
// FixedMin set to 20, smaller SegmentHeight
$Options = array(
'SegmentHeight' => 10,
'Segments' => 2,
'FixedMax' => 40,
'FixedMin' => 20, // And so on...
塔达。