2009-09-21 63 views
0

我想爲我的Google字符中的標籤固定寬度大小。問題是我正在顯示幾個圖表,一個在另一個下面。由於y軸充滿了人的名字,根據名字的長度,我得到更寬或更窄的lebel區域。最終的結果是醜陋的,因爲每個圖表都有不同的標籤寬度,最糟糕的是,數據實際顯示的區域更寬或更窄。我希望所有這些都一致。爲了確保我能夠理解,我在下面發佈了一個非常骯髒的解決方案。嘗試時,我想出了這個(我沒有保留)。看到______________行,就好像它是一個項目。當使用這條巨大的線時,我的所有標籤都會對齊,但效果很差。除了醜陋之外,它偷走了其中一個名字佔據的位置。任何幫助將非常感激。謝謝!谷歌圖表中的標籤寬度

![<img src="https://chart.apis.google.com/chart?chs=750x134&cht=bhg&chco=FF9900,FFCC99&chg=10,0,2,5&chbh=12,3,15&chxt=x,y&chxl=0:|0|1|2|3|4|5|6|7|8|9|10|1:|______________________________|Carlos+Roberto+Ramos|Antonio+Rodrigues|Ana+Rosa|&chxs=1,666666,14,1&chd=t:10,20,20,-1&chm=r,a0bae9,0,0,0.20|r,356bd0,0,0.20,0.202" />][1] 

[1]:

回答

0

另一個非常骯髒的方式做到這一點是要計算使用的是再乘以一個修正因子最長的標籤字符的數量返回像素長度的標籤。爲此,我使用4.8px作爲似乎有關的權利......

我加入這個價值爲酒吧區(250在我的情況)大小右對齊圖表的任意值和

這產生漂亮好結果,但有一些運動取決於標籤中包含的字符(由於字體字距)。

下面參見VBA代碼我用於產生標籤寬度值(如,正在使用Access生成的圖表):

Function labelSizePx() 
    Dim label_array 
    label_array(0) = "foo" 
    label_array(1) = "goo" 
    label_array(2) = "bar" 
    label_array(3) = "foogoobar" 

    Dim lng_str 
    lng_str = "" 

    For i = 0 To UBound(label_array) 
     If Len(label_array(i)) > Len(lng_str) Then lng_str = label_array(i) 
    Next i 

    Dim char_px 
    char_px = 4.8 


    labelSizePx = CInt(Len(lng_str) * char_px) 

    ' returns 43px in this case 

End Function 

這可能會因輸出的最長標記成<跨度可以提高因爲上面的方法試圖使用模糊因子來估計字體的字距(kerning),所以元素(或類似的)和計算字符串的實際寬度。

+0

一個圖像將是偉大的這個答案。 :) –