2013-12-19 41 views
3

我使用的雷達圖類似於此示例pChart雷達圖表:從得分1至4 https://pchart.net/doc.draw.radar.html具有最小1

我的數據範圍,所以我配置一些選項:

$options = array(
    'SegmentHeight' => 1, 
    'Segments' => 3, 
    'FixedMax' => 4 
); 

一個問題仍然存在:即使我的最低分數是1,雷達圖表的中心值始終爲0。

如何將圖表中的最小值更改爲1?

+0

如果您降低最低值會怎麼樣?那麼默認爲中心,對不對? – JSuar

+0

我也認爲,但它不起作用。最低值是1,雷達仍然顯示0值。 – lorenz

+0

如果你從你的所有值中減去一個值,那麼你的範圍是0-3。這將有希望把你的價值觀放在中心位置。然後你可以改變標籤來顯示1-4。 – JSuar

回答

4

您可以創建一個「最小」值,但前提是您願意分叉庫並進行一些更改。

比賽計劃

這樣做的最簡單,最直接的方法是創建一個我稱之爲FixedMin一個新的選擇。當且僅當提供了這個新選項(並且符合其他非自動分割標準)時,您是否會達到您所尋求的效果。

如果你想有一個最低限度,而不提供SegmentHeightSegments中產生,並FixedMax,你還需要修改pImage::computeScale不是在提供時,他們產生這些配置值。

我們需要實現三個轉變:

  1. 創建一個新的配置選項,稱爲FixedMin
  2. 調整值的位置
  3. 調整標籤的文本

讓我們的代碼

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... 

Default behavior

正如預期的那樣,現在讓我們看看我們的新代碼...

// FixedMin set to 20, smaller SegmentHeight 
$Options = array(
'SegmentHeight' => 10, 
'Segments' => 2, 
'FixedMax' => 40, 
'FixedMin' => 20, // And so on... 

With a minimum of 20

Ta-da。

+0

我爲了研究和概念證明(在時間耗盡之前)給予您獎勵,並且一旦實施它就會接受答案。謝謝你,雅各! – lorenz

+0

完美的作品 - 非常感謝! – lorenz

+0

謝謝,非常有幫助! – Alex

相關問題