我使用的雷達圖類似於此示例pChart雷達圖表:從得分1至4 https://pchart.net/doc.draw.radar.html具有最小1
我的數據範圍,所以我配置一些選項:
$options = array(
'SegmentHeight' => 1,
'Segments' => 3,
'FixedMax' => 4
);
一個問題仍然存在:即使我的最低分數是1,雷達圖表的中心值始終爲0。
如何將圖表中的最小值更改爲1?
我使用的雷達圖類似於此示例pChart雷達圖表:從得分1至4 https://pchart.net/doc.draw.radar.html具有最小1
我的數據範圍,所以我配置一些選項:
$options = array(
'SegmentHeight' => 1,
'Segments' => 3,
'FixedMax' => 4
);
一個問題仍然存在:即使我的最低分數是1,雷達圖表的中心值始終爲0。
如何將圖表中的最小值更改爲1?
您可以創建一個「最小」值,但前提是您願意分叉庫並進行一些更改。
這樣做的最簡單,最直接的方法是創建一個我稱之爲FixedMin
一個新的選擇。當且僅當提供了這個新選項(並且符合其他非自動分割標準)時,您是否會達到您所尋求的效果。
如果你想有一個最低限度,而不提供SegmentHeight
,Segments
中產生,並FixedMax
,你還需要修改pImage::computeScale
不是在提供時,他們產生這些配置值。
我們需要實現三個轉變:
FixedMin
drawRadar
方法在舉行。打開它。讓我們來看看我們的遊戲計劃。
第一個,讓我們添加配置選項。我會和別人(行〜38)像這樣添加:
$FixedMin = isset($Format["FixedMin"]) ? $Format["FixedMin"] : 0;
讓我們FixedMin
默認爲0
,因爲這是默認pChart行爲。
第二,我們需要以某種方式欺騙pChart重新定位這些較大的值,就好像它們較小以容納創建的偏移量FixedMin
。
我們可以通過函數計算圖的位置(行〜319)。找到迴路foreach($DataS["Data"] as $Key => $Value)
(line〜328)。在這裏,我們將通過在循環頂部添加這一行修改$Value
:
$Value -= $FixedMin; // Let's offset the perceived value by our new minimum
三,我們需要改變軸標籤的文本值。條件是$DrawAxisValues
包含在裏面,你會發現這行代碼(行〜255):
$Label = ($j * $SegmentHeight)
這個偉大的工程;對於每個片段,它生成一個標籤,該片段是該片段乘以高度(例如,20個單元的4個片段應該生成具有20,40,60,80的4個標籤)。但它不會與我們的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...
Ta-da。
如果您降低最低值會怎麼樣?那麼默認爲中心,對不對? – JSuar
我也認爲,但它不起作用。最低值是1,雷達仍然顯示0值。 – lorenz
如果你從你的所有值中減去一個值,那麼你的範圍是0-3。這將有希望把你的價值觀放在中心位置。然後你可以改變標籤來顯示1-4。 – JSuar