在 Shinobi 上忽略 BarSeries 线宽

Posted

技术标签:

【中文标题】在 Shinobi 上忽略 BarSeries 线宽【英文标题】:BarSeries linewidth ignored on Shinobi 【发布时间】:2014-08-25 09:15:17 【问题描述】:

我正在尝试使用 Shinobi 设置 BarSeries 条的宽度。 代码如下:

DataAdapter<String, Double> da1 = new SimpleDataAdapter<String, Double>();
        da1.add(new DataPoint<String, Double>("q1", 1.0));
        da1.add(new DataPoint<String, Double>("q2", 3.0));
        da1.add(new DataPoint<String, Double>("q3", 4.5));
        da1.add(new DataPoint<String, Double>("q4", -2.5));
        BarSeries series1 = new BarSeries();
        series1.setDataAdapter(da1);
        BarSeriesStyle css1 = series1.getStyle();
        css1.setLineWidth(180.0f);
        css1.setAreaColor(Color.YELLOW);

        CategoryAxis xAxis = new CategoryAxis();
        chart.setXAxis(xAxis);
        xAxis.getStyle().setInterSeriesPadding(0.2f);
        NumberAxis yAxis = new NumberAxis();
        chart.setYAxis(yAxis);
        yAxis.getStyle().setInterSeriesPadding(0.2f);

        chart.addSeries(series1);

发生的情况是 css1.setLineWidth(180.0f); 行被完全忽略。我可以输入1.0f1000.0f,不管怎样,线条总是相同的宽度。

我错过了什么,或者做错了什么?我正在使用 shinobi 1.5.1。


编辑:ColumnSeries 也是如此:

ColumnSeries cs = new ColumnSeries();
    DataAdapter<Float, Integer> adapterAxis = new SimpleDataAdapter<Float, Integer>();
    adapterAxis.add(new DataPoint<Float, Integer>(0f, 3));
    cs.getStyle().setLineColor(Color.BLACK);
    cs.getStyle().setLineWidth(1f);
    cs.setDataAdapter(adapterAxis);

1f20f,没有任何变化。 chart.addSeries(cs);


编辑:按照凯的回答。

我尝试使用setInterSeriesPadding,但它不能满足我的需要高度和它们之间的空间将保持“大”。

为了更清楚:我在 Y 轴上的 0 到 4 处有 4 个条,具有不同的 X 值。每一个都或多或少以 Y 值为中心(不是真的,但现在并不重要)。例如。以 2 为中心的条形将从 ~1.8 变为 ~2.2,以 3 为中心的条将从 ~2.8 变为 ~3.2。我希望它们更厚,以便它们从 ~1.55 到 ~2.45 和从 ~2.55 到 ~3.45。我该怎么做?


编辑 2(图像):

实际:

渴望(抱歉我缺乏绘画技巧,这只是表明我希望它们更厚的一种方式):

【问题讨论】:

【参考方案1】:

当您提到条形系列的宽度时,我假设您指的是高度,即从条形的顶部到底部的测量值。我想提一下,setLineWidth() 方法并非用于此目的,但实际上此方法用于设置围绕条(或列)边缘绘制的线条以充当边框的样式。随着传递给此方法的值增加,条(或列)保持相同大小,但线向内增长。随后,较大的数字将看起来没有线条,因为条形或列将有一条很粗的线,以致填满整个条形(或列)。

如果您想控制条的高度(或列的宽度),您需要使用以下方法:

http://www.shinobicontrols.com/docs/ShinobiControls/ShinobiChartsandroid/1.5.1/Premium/Normal/apidocs/docs/reference/com/shinobicontrols/charts/AxisStyle.html#setInterSeriesPadding(float)

http://www.shinobicontrols.com/docs/ShinobiControls/ShinobiChartsAndroid/1.5.1/Premium/Normal/apidocs/docs/reference/com/shinobicontrols/charts/AxisStyle.html#setInterSeriesSetPadding(float)

我希望这些信息对您有用。谢谢和亲切的问候,

启。

编辑:

你好斯蒂芬,

感谢您提供额外信息。

所以今天我创建了一个快速应用程序,使用您的代码用数据填充 Shinobi 图表。

我确实看到了您描述的细条问题。我相信为了纠正这个问题,您还需要调用方法 Axis.setInterSeriesSetPadding(float)。

虽然当您在图表中使用单个系列时并不明显,但此方法确实会影响各个条形之间的间距。默认情况下,如果未显式调用此方法,则条之间的间距很小。

还请记住,这两个方法需要一个介于 0(根本没有填充)和 1 之间的浮点值。我建议您使用参数 0.0 调用这两个方法并慢慢增加值,直到达到您想要的外观.您应该只需要在您的类别轴上调用这两个方法,而不是在数据轴上。

在使用您的代码构建我的应用程序时,我注意到您使用的是条形系列,但您的类别轴位于 x 轴上。我发现当我构建我的应用程序时,它最初只显示 3 个条形图,因为第一个类别(“q1”)被呈现为具有零数据值。这是因为类别在内部被赋予了一个整数索引,因此第一个类别以 0 索引存储。

使用条形系列的典型方法是将类别放在 y 轴上,将数据值放在 x 轴上。我修改了我的应用程序以使用此配置,我发现所有 4 个条都正确显示。此外,我能够有一个填充范围从没有,条相互对接,到很多条看起来很薄的填充。

我希望这会有所帮助,

谢谢,

凯。 免责声明:我为 ShinobiControls 工作。

【讨论】:

感谢您澄清该方法的作用。我尝试了 interSeriesPadding,但这还不够,我会用更多细节更新我的问题。 我已经更新了几张图片,说明了它现在的结果以及我想要的结果,谢谢 感谢您的更新,我会尽快尝试! 嗨,凯,它确实有效。使用多个系列时我仍然遇到问题,但我猜这是一个不同的问题。我会将您的答案标记为已接受并打开一个新问题。谢谢!

以上是关于在 Shinobi 上忽略 BarSeries 线宽的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 的 Shinobi 折线图中更新/删除/插入新的系列/数据?

Android - 为 BarSeries 中的每个数据点设置其他颜色(shinobicharts)

将 shinobi 图表打印成 PDF

Atomos Shinobi 隐刃—全新5寸AtomHDR监视器登场

Nativescript-vue,如何更改 BarSeries(Radchart) 图形“条形”颜色?

word波浪线怎样去掉