我正在尝试为我的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 :(得分: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
这可以通过将最长的标签输出到&lt; span&gt;来改善。元素(或类似)并计算字符串的实际宽度,因为上述方法尝试使用软糖因子估计字体的字距。