|
); //让柱子间没空白 chart2.getBar().setBarInnerMargin(0d); //轴颜色 chart2.getDataAxis().getAxisPaint().setColor(axisColor); chart2.getCategoryAxis().getAxisPaint().setColor(axisColor); chart2.getDataAxis().getTickMarksPaint().setColor(axisColor); chart2.getCategoryAxis().getTickMarksPaint().setColor(axisColor); chart2.getDataAxis().getTickLabelPaint().setColor(axisColor); chart2.getCategoryAxis().getTickLabelPaint().setColor(axisColor); chart2.getAxisTitle().getLeftAxisTitlePaint().setColor(axisColor); chart2.getAxisTitle().getLowerAxisTitlePaint().setColor(axisColor); //隐藏图例 chart2.getPlotLegend().hideLegend(); } catch (Exception e) { // TODO Auto-generated catch block Log.e(TAG, e.toString()); } } private void chartDataSet() { //标签对应的柱形数据集 List
dataSeriesA= new LinkedList
(); dataSeriesA.add(2400d); dataSeriesA.add(2400d); dataSeriesA.add(2400d); dataSeriesA.add(2400d); dataSeriesA.add(2400d); BarData BarDataA = new BarData("流动资产",dataSeriesA,(int)Color.rgb(58, 191, 247)); List
dataSeriesB= new LinkedList
(); dataSeriesB.add(2000d); dataSeriesB.add(2000d); dataSeriesB.add(2000d); dataSeriesB.add(2000d); dataSeriesB.add(2000d); BarData BarDataB = new BarData("非流动资产",dataSeriesB,(int)Color.rgb(20, 181, 251)); chartData.add(BarDataA); chartData.add(BarDataB); List
dataSeriesAA= new LinkedList
(); dataSeriesAA.add(0d); BarData BarDataAA = new BarData("负债",dataSeriesAA,(int)Color.rgb(38, 137, 176)); List
dataSeriesBB= new LinkedList
(); dataSeriesBB.add(0d); BarData BarDataBB = new BarData("所有者权益",dataSeriesBB,(int)Color.rgb(13, 116, 161)); chartData.add(BarDataAA); chartData.add(BarDataBB); } private void chartDataSet2() { //标签对应的柱形数据集 List
dataSeriesA= new LinkedList
(); dataSeriesA.add(1600d); dataSeriesA.add(1700d); dataSeriesA.add(1800d); dataSeriesA.add(1800d); dataSeriesA.add(1500d); BarData BarDataA = new BarData("负债",dataSeriesA,(int)Color.rgb(38, 137, 176)); List
dataSeriesB= new LinkedList
(); dataSeriesB.add(1500d); dataSeriesB.add(1300d); dataSeriesB.add(1400d); dataSeriesB.add(1200d); dataSeriesB.add(1600d); BarData BarDataB = new BarData("所有者权益",dataSeriesB,(int)Color.rgb(13, 116, 161)); chartData2.add(BarDataA); chartData2.add(BarDataB); } private void chartLabels() { chartLabels.add("20%"); chartLabels.add("40%"); chartLabels.add("60%"); chartLabels.add("80%"); chartLabels.add("100%"); } @Override public void render(Canvas canvas) { try{ chart.render(canvas); chart2.render(canvas); //绘制轴点 float radius = 10f; Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(this.axisColor); canvas.drawCircle(chart2.getPlotArea().getLeft(), chart2.getPlotArea().getBottom(), radius, paint); canvas.drawCircle(chart2.getPlotArea().getRight(), chart2.getPlotArea().getBottom(), radius, paint); canvas.drawCircle(chart2.getPlotArea().getLeft(), chart2.getPlotArea().getTop(), radius, paint); } catch (Exception e){ Log.e(TAG, e.toString()); } }
至此,图就绘制出来了。 代码不长,相信基本能看懂。
特别要说一下代码中的绘制轴点。 在原图中,轴的两端和交叉处都有一个白点。XCL-Charts默认是没有这个功能,但这三个点的位置,
在XCL-Charts中都能取得出来,所以直接在render()中,直接加上三个绘制制circle的代码就行了。图例和轴标题风格有点不同,但这已不是什么大问题了。如果
还要求一样,可从XCL-Charts中依相关函数得到位置后,自定义一个图例和轴标题也不是难事。
发现现在有个性的图太多了,各式各样,好多都没见过,很难考虑得到这些 |