2012-02-22 79 views
1

我一直在試圖創建一個條形圖,顯示食品的庫存水平隨着時間的推移而下降。Android GraphView條形圖高度

I used the sample code from here:

我改變了代碼略有GraphViewDemo以適應Y軸上的4個值:

( 「大」, 「好」, 「好」 和 「壞」)和4個值在X軸上

(「今天」,「明天」,「2日」,「3日」)

,並要顯示的庫存水平是如何隨時間而減少。下面是應顯示條壞了很大提高代碼:

float[] values = new float[] { 1.0f,1.5f, 2.0f, 2.5f }; 
    String[] verlabels = new String[] { "great", "good", "ok", "bad"}; 
    String[] horlabels = new String[] { "today", "tomorrow", "2 days", "3 days" }; 
    GraphView graphView = new GraphView(this, values, "Stock Levels",horlabels, verlabels, GraphView.BAR); 
    setContentView(graphView); 

這是細跟的數字1.0F,1.5F,2.0F,2.5F。問題是,如果我將第一個float更改爲2.0(期望第一個bar更改爲「good」的高度),則所有的條都會更改。

在這種情況下,視圖將更改爲「ok」和「good」之間的第一個和第三個酒吧高度,第二個酒吧爲「bad」的高度。

這可能與GraphView類中94行附近的像素轉換有關,但代碼沒有很好地評論,我發現很難理解所有內容。

回答

0

問題似乎與這條線在GraphView類:

canvas.drawRect((i * colwidth) + horstart, (border - h) + graphheight, ((i * colwidth) + horstart) + (colwidth - 1), height - (border - 1), paint); 

所以我找到了4個高地酒吧可以在圖表上的值(「大」,「好」,「 OK「,」bad「),並創建了一個switch語句來設置一個變量。開關將採用值1.0,1.5,2.0和2.5,並將其與它們相應的鋼筋高度相關聯。

然後我用變量代替高度,而不是下面的計算「(border -h)+ graphheight」。這樣,酒吧只有4個高度。