我试图用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.0f
或1000.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);
1f
或20f
,没有任何变化。
chart.addSeries(CS);
编辑:关注凯的答案。
我尝试使用setInterSeriesPadding
,但如果我将1.f
作为填充值接近0f
,则条形将缩小,但是如果我设置{{1}条形将具有最小高度,它们之间的空间将保持“大”状态。
更清楚一点:我在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(图像):
实际值:
渴望(抱歉我缺乏Paint技能,这只是一种表明我希望它们更厚的方式):
答案 0 :(得分:0)
当你提到条形系列的宽度时,我假设你指的是高度,即从条形的顶部到底部进行测量。我想提一下setLineWidth()方法不是为了这个目的,但实际上这个方法用于设置围绕条形(或列)边缘绘制的线的样式以充当边框。随着传递给此方法的值增加,条形(或列)保持相同的大小,但线条向内增长。随后,大量的数字将显示没有线条的外观,因为条形或列条的线条很厚,以至于它会填满整个条形(或列)。
如果你想操纵条的高度(或列的宽度),你需要使用这些方法:
和
我希望您发现此信息有用。谢谢和亲切的问候,
启
编辑:
你好斯蒂芬,
感谢您提供额外信息。
所以今天我创建了一个快速应用程序,使用您的代码用数据填充Shinobi图表。
我确实看到了你描述的细条问题。我相信为了纠正这个问题,你还需要调用方法Axis.setInterSeriesSetPadding(float)。
虽然在图表中使用单个系列时并不明显,但此方法确实会影响各个条形之间的间距。默认情况下,如果未显式调用此方法,则栏之间会有一个小间距。
请记住,这两种方法期望浮点值介于0(完全没有填充)和1.我建议您使用参数0.0调用这两个方法并慢慢增加值,直到达到您希望的外观。您只需要在类别轴上调用这两种方法,而不是数据轴。
在使用您的代码构建我的应用程序时,我注意到您使用了一个条形系列,但您的类别轴在x轴上。我发现当我构建我的应用程序时,它最初只显示3个条形作为第一个类别(&#34; q1和#34;)呈现为具有零数据值。这是因为类别在内部被赋予整数索引,因此第一个类别以0索引存储。
使用条形系列的典型方法是在y轴上设置类别,在x轴上设置数据值。我修改了我的应用程序以使用此配置,我发现所有4个条显示正确。此外,我能够在没有任何东西的情况下进行填充,其中条形物相互对接,在很多衬垫处,条纹看起来很薄。
我希望这会有所帮助,
谢谢,
启。 免责声明:我为ShinobiControls工作。