我正在使用aChartEngine库创建包含多个系列的折线图。 我修改了XYChartBuilder.java中的代码来创建一个示例并测试我是否可以使用特定颜色填充每个系列下的区域。尝试在每个系列下方填充不同颜色时,我遇到了问题。在系列重叠的区域,未显示基础系列的线条。
以下是我用于在图表上添加系列和数据的代码
public void addSeries(int id) {
String seriesTitle = "Series " + (mDataset.getSeriesCount() + 1);
// create a new series of data
XYSeries series = new XYSeries(seriesTitle);
mDataset.addSeries(series);
mCurrentSeries = series;
// create a new renderer for the new series
XYSeriesRenderer renderer = new XYSeriesRenderer();
mRenderer.addSeriesRenderer(renderer);
// set some renderer properties
renderer.setPointStyle(PointStyle.CIRCLE);
renderer.setFillPoints(true);
renderer.setDisplayChartValues(true);
renderer.setDisplayChartValuesDistance(10);
renderer.setLineWidth(2);
if (id == 1) {
FillOutsideLine fill = new FillOutsideLine(FillOutsideLine.Type.BELOW);
fill.setColor(Color.BLUE);
renderer.addFillOutsideLine(fill);
renderer.setColor(Color.BLUE);
renderer.setPointStyle(PointStyle.SQUARE);
}
if (id == 2) {
FillOutsideLine fill = new FillOutsideLine(FillOutsideLine.Type.BELOW);
fill.setColor(Color.WHITE);
renderer.addFillOutsideLine(fill);
renderer.setPointStyle(PointStyle.CIRCLE);
renderer.setColor(Color.GREEN);
}
if (id == 3) {
FillOutsideLine fill = new FillOutsideLine(FillOutsideLine.Type.BELOW);
fill.setColor(Color.YELLOW);
renderer.addFillOutsideLine(fill);
renderer.setPointStyle(PointStyle.CIRCLE);
renderer.setColor(Color.YELLOW);
}
mCurrentRenderer = renderer;
mChartView.repaint();
}
public void addData(double x, double y) {
// add a new data point to the current series
mCurrentSeries.add(x, y);
// repaint the chart such as the newly added point to be visible
mChartView.repaint();
}
当我需要创建我打电话的系列时
addSeries(1);
addData(0, 0);
addData(2, 3);
addData(4, 0);
addSeries(2);
addData(2, 0);
addData(6, 3);
addData(8, 0);
addSeries(3);
addData(6, 0);
addData(9, 3);
addData(11, 0);
如果我在addSeries函数中指定了FillOutsideLine对象但是没有设置颜色我得到了我想要的预期行为。但是,每个系列下的区域都使用相同的颜色绘制(蓝色 - 似乎是默认值)。
不幸的是我是新手,我的声誉仍然很低,因此我无法上传任何图片。
非常感谢任何帮助。
谢谢,
卢佩。
答案 0 :(得分:2)
我找到了我的问题的解决方案,所以我列出它以防其他人遇到同样的问题。问题出现了,因为我使用纯色绘制系列下的区域。我用半透明的颜色测试它,问题现在解决了。
示例:
fill.setColor(Color.parseColor("#5500FF66"));
L,