2015-03-08 3 views
2

В андроидеплот XYPlot метки метки на оси Y обрезаются, если у вас большие значения (много цифр) и/или большой размер шрифта. Это (и аналогичные вопросы по оси X) было обсуждено ранее в этих вопросах:Androidplot: установить отступы/край (идеально) для размещения меток осей

Ответ всегда добавить больше заполнение и/или маржа, чтобы иметь достаточное пространство для ярлыков.

Мой вопрос: Как я могу установить отступ/запас, чтобы иметь только правильное количество пространства?

Простое жесткое кодирование левого поля для некоторого значения является неоптимальным решением. Предположим, что я хочу построить некоторые данные, и я не знаю заранее, если значения Y будут находиться в диапазоне [0,9] или в диапазоне [10000,20000]. Как я могу установить дополнение/край, чтобы избежать как отсечения, так и ненужного пустого пространства?

ответ

1

Лучший обходной путь я смог найти это:

int digits = (int) Math.floor(Math.log10(absmax)) + 1; 
float leftpad = digits * fontsize/2; 
myplot.getGraphWidget().setPaddingLeft(leftpad); 

Где absmax это наибольшее абсолютное значение в данных.

0

У меня есть что-то вроде этого, которое, я думаю, сделает трюк. Моя настройка сложнее, поскольку я накладываю несколько графиков друг на друга, чтобы получить влияние нескольких диапазонов.

left_pad = mTripPlot.getGraphWidget().getRangeLabelWidth() - 1; 
mTripPlot.getGraphWidget().setPadding(left_pad, top_pad, right_pad, bottom_pad); 
+0

Для меня 'getRangeLabelWidth()' всегда возвращает 41.0, независимо от значений по оси Y и размера шрифта, установленного с помощью 'getGraphWidget(). GetRangeLabelPaint(). SetTextSize()'. – Dietmar

Смежные вопросы