如何设置Android中固定的Shinobicharts列宽?

时间:2016-03-26 04:49:10

标签: android graph width bar-chart shinobi

对于以下情况,我面临着ShinobiCharts [Android]列宽的奇怪问题:

XAxis : Date <br>
YAxis : Double

输入1:DataAdapter = {[00:00,0.0],[02:00,360],[24:00,0.0]}
输出:低于输出#1屏幕截图显示了预期的列宽度。

enter image description here

输入2:DataAdapter = {[00,0.0],[15:150.0],[24:00,0.0]}
输出:屏幕截图2显示了一个列长度更长的栏,不适合该界限。

enter image description here

输入3:DataAdapter = {[00,0.0],[23:00,360.0],[24:00,0.0]}
输出:屏幕截图3显示更大和更大的列宽。

enter image description here

如果适配器当天有3个条目,那么每个列宽都显示为截图1。

问题是:我只是想知道我在这里缺少什么,以及我应该使用什么API来限制此列宽仅在其适合的范围内显示?

请帮帮我。

private Series createSeries(@NonNull final DataAdapter<Date, Integer> dataAdapter, @NonNull final String title, final int color) {
        final ColumnSeries series = new ColumnSeries();
        series.setDataAdapter(dataAdapter);
        series.setShownInLegend(true);
        series.setTitle(title);
        series.setSelectionMode(Series.SelectionMode.POINT_MULTIPLE);
        ColumnSeriesStyle style = series.getStyle();
        style.setAreaColor(color);
        style.setAreaColorGradient(color);
        style.setLineColor(color);
        series.setStackId(1);
        return series;
    }

2 个答案:

答案 0 :(得分:0)

这是我自己问题的解决方案。

问题:      shinoby-version:shinobicharts-android-premium-1.7.2-0.jar

从下面的链接,了解到shinobycharts没有api来控制列的宽度(垂直条)(向下滚动并查看(2016年1月22日发布的波纹))其积压项目。

[shinobicontrols.com/forum/shinobicontrols/2013/4/how-are-the-widths-of-columns-set]

根据附带的屏幕截图,如果第一个分区没有入口点,那么在X轴上每天12点到凌晨4点[12-4]或[00-04]每天,列的宽度无法控制。

解决方案: 作为一种变通方法或正确的修复方法,如果没有实际数据,我只在第一个分区中添加了一个虚拟条目。最后的适配器如下所示。

如果实际数据显示第一个分区,即屏幕截图中的[12-4]。这里不需要添加假人:
之前:DataAdapter = {[00:00,0.0],[02:00,360],[24:00,0.0]}
   now:DataAdapter = {[00:00,0.0],[02:00,360],[24:00,0.0]} //没有像以前那样改变。

如果不是:
之前:DataAdapter = {[00,0.0],[15:150.0],[24:00,0.0]}
    现在:DataAdapter = {[00:00,0.0],[02:00,0],[15:150.0],[24:00,0.0]}

结束条目[02:00,0]是这里的虚拟条目。并且不会弄乱输出,因为VALUE在这里设置为零。

输出:#

Without entry in the first partition 12-4

With entry in the first partition 12-4

答案 1 :(得分:0)

我很高兴你能够解决你的问题。

如您所见,数据本身会对绘制列的宽度产生重大影响。

当图表计算绘制列的宽度时,除其他外,它会查看相关轴的每个数据值之间的距离。它将选择两个数据点值之间的最短距离,并以此为基础计算列宽。除了数据点值具有变化的频率之外,这种方法通常产生具有一致宽度的均匀间隔的列。例如,如果您的大多数数据点与其相邻的数据点相距9小时的x值,但是一对x值相隔仅2小时,则可能会遇到此类问题。此外,DateTime轴与列或条形图一起使用时也会导致列宽或条宽变化,因为日期频率通常会有所不同。例如,对于月度数据,某些月份为31天,而有些月份为30,28或29。

将来我们可能会提供额外的api方法来允许手动设置列宽。我当然不能确定何时可以使用这种api。与此同时,如果您仍然遇到柱形图问题,请联系info@shinobicontrols.com与我们联系。在这种情况下,请尽可能包含代码示例,以帮助我们快速了解您的问题。

谢谢和亲切的问候, 启

免责声明:我为Shinobicontrols工作。