我正在使用类似于此示例的雷达图: https ://pchart.net/doc.draw.radar.html
我的数据范围从分数 1 到 4,所以我配置了一些选项:
$options = array(
'SegmentHeight' => 1,
'Segments' => 3,
'FixedMax' => 4
);
一个问题仍然存在:即使我的最低分数是 1,雷达图的中心值也始终为 0。
如何将图表中的最小值更改为 1?
我正在使用类似于此示例的雷达图: https ://pchart.net/doc.draw.radar.html
我的数据范围从分数 1 到 4,所以我配置了一些选项:
$options = array(
'SegmentHeight' => 1,
'Segments' => 3,
'FixedMax' => 4
);
一个问题仍然存在:即使我的最低分数是 1,雷达图的中心值也始终为 0。
如何将图表中的最小值更改为 1?
您可以创建一个“最小”值,但前提是您愿意分叉库并进行一些更改。
最简单和最直接的方法是创建一个我将调用的新选项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...
达达。