Androidplot:设置 padding/margin 以(完美地)容纳轴标签
Androidplot: Set padding/margin to (perfectly) accommodate axis labels
在 androidplot XYPlot 中,如果您有大值(许多数字)and/or 大字体,Y 轴上的刻度标签会被剪掉。这个(以及 X 轴上的类似问题)已经在这些问题中讨论过:
- Range field in Android Plot (0.6.1.) is not showing the entire number
- Androidplot - X-Axis labels cut off
- https://groups.google.com/forum/#!topic/androidplot/b0zLJl9Bx-0
- https://groups.google.com/forum/#!topic/androidplot/w4EK4B_W-74
答案总是添加更多的填充 and/or 边距,以便有足够的 space 用于标签。
我的问题是:如何设置 padding/margin 使 恰到好处 的 space ]?
简单地将左边距硬编码为某个值是次优解决方案。假设我想绘制一些数据,并且我事先不知道 Y 值是在 [0,9] 范围内还是在 [10000,20000] 范围内。如何设置 padding/margin 以避免剪裁和不必要的空 space?
我有这样的东西,我认为它可以解决问题。我的设置更复杂,因为我将多个图叠加在一起以获得多范围影响。
left_pad = mTripPlot.getGraphWidget().getRangeLabelWidth() - 1;
mTripPlot.getGraphWidget().setPadding(left_pad, top_pad, right_pad, bottom_pad);
我能找到的最佳解决方法是:
int digits = (int) Math.floor(Math.log10(absmax)) + 1;
float leftpad = digits * fontsize/2;
myplot.getGraphWidget().setPaddingLeft(leftpad);
其中 absmax 是数据中最大的绝对值。
如果有人需要,这里是我如何使用当前版本的 AndroidPlot (1.5.7) 为范围标签设置动态填充
String largestString = getLargestLabelOnRange();
float rangeLabelPadding = largestString.length() * 9;
plot.getGraph().setPaddingLeft(rangeLabelPadding);
在 androidplot XYPlot 中,如果您有大值(许多数字)and/or 大字体,Y 轴上的刻度标签会被剪掉。这个(以及 X 轴上的类似问题)已经在这些问题中讨论过:
- Range field in Android Plot (0.6.1.) is not showing the entire number
- Androidplot - X-Axis labels cut off
- https://groups.google.com/forum/#!topic/androidplot/b0zLJl9Bx-0
- https://groups.google.com/forum/#!topic/androidplot/w4EK4B_W-74
答案总是添加更多的填充 and/or 边距,以便有足够的 space 用于标签。
我的问题是:如何设置 padding/margin 使 恰到好处 的 space ]?
简单地将左边距硬编码为某个值是次优解决方案。假设我想绘制一些数据,并且我事先不知道 Y 值是在 [0,9] 范围内还是在 [10000,20000] 范围内。如何设置 padding/margin 以避免剪裁和不必要的空 space?
我有这样的东西,我认为它可以解决问题。我的设置更复杂,因为我将多个图叠加在一起以获得多范围影响。
left_pad = mTripPlot.getGraphWidget().getRangeLabelWidth() - 1;
mTripPlot.getGraphWidget().setPadding(left_pad, top_pad, right_pad, bottom_pad);
我能找到的最佳解决方法是:
int digits = (int) Math.floor(Math.log10(absmax)) + 1;
float leftpad = digits * fontsize/2;
myplot.getGraphWidget().setPaddingLeft(leftpad);
其中 absmax 是数据中最大的绝对值。
如果有人需要,这里是我如何使用当前版本的 AndroidPlot (1.5.7) 为范围标签设置动态填充
String largestString = getLargestLabelOnRange();
float rangeLabelPadding = largestString.length() * 9;
plot.getGraph().setPaddingLeft(rangeLabelPadding);