Ширина метки в Google Charts - PullRequest
       4

Ширина метки в Google Charts

0 голосов
/ 21 сентября 2009

Я пытаюсь установить фиксированный размер ширины для меток в моих символах 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]: image

1 Ответ

0 голосов
/ 09 марта 2012

Еще один очень грязный способ сделать это - вычислить количество символов в самой длинной метке, которую вы используете, а затем умножить на коэффициент выдумки, чтобы получить длину метки в пикселях. Для этого я использовал 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

Это может быть улучшено путем вывода самой длинной метки в элемент (или аналогичный) и вычисления фактической ширины строки, поскольку вышеприведенный метод пытается оценить кернинг шрифта с использованием коэффициента выдумки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...