首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Android中的AchartEngine对条形图中的单个条形图应用多种颜色?

如何使用Android中的AchartEngine对条形图中的单个条形图应用多种颜色?
EN

Stack Overflow用户
提问于 2013-06-14 15:24:27
回答 2查看 1.3K关注 0票数 1

我想根据图像制作条形图,但我不知道如何在y轴的某个点改变条形图的颜色,我还想在y轴的特定点绘制一条线(图像中的红线),就像在image.Please中一样,帮助我如何才能做到这一点?

代码语言:javascript
复制
private void ChartView() {

            String[] titles = new String[] { " " };

        //  int[] colors = new int[] { Color.BLUE, Color.BLUE };
            multiRenderer = buildBarRenderer(colors);
            multiRenderer.setApplyBackgroundColor(true);

            multiRenderer.setMarginsColor(Color.WHITE);
            multiRenderer.setBackgroundColor(Color.parseColor("#DCDCDC"));
            setChartSettings(multiRenderer, "Calorie-Consume-Chart", chatX_lable,chatY_lable, -4,
                    6, 0, 240, Color.BLACK, Color.BLACK);
            multiRenderer.getSeriesRendererAt(0).setDisplayChartValues(true);
            //multiRenderer.getSeriesRendererAt(1).setDisplayChartValues(true);

            multiRenderer.setXLabels(0);
            multiRenderer.setYLabels(10);
            multiRenderer.clearXTextLabels();
            multiRenderer.setXLabelsAlign(Align.LEFT);
            multiRenderer.setYLabelsAlign(Align.LEFT);
            multiRenderer.setPanEnabled(false, false);
            // renderer.setZoomEnabled(false);
            multiRenderer.setZoomRate(1.1f);
            multiRenderer.setBarSpacing(0.7);
            multiRenderer.setZoomEnabled(true);
            multiRenderer.


            LinearLayout layout = (LinearLayout) findViewById(R.id.weightlinl);
            layout.removeAllViews();
            if (mChartView == null) {
                mChartView = ChartFactory.getBarChartView(this,
                        buildBarDataset(titles, weekly_data_int)/* dataset */,
                        multiRenderer,org.achartengine.chart.BarChart.Type.DEFAULT);
                layout.addView(mChartView);
            } else {
                // mChartView.repaint();

                mChartView = ChartFactory.getBarChartView(this,
                        buildBarDataset(titles, weekly_data_int), multiRenderer,
                        org.achartengine.chart.BarChart.Type.DEFAULT);
                mChartView.setBackgroundColor(Color.YELLOW);
                layout.addView(mChartView);

                // mChartView.repaint();
            }
            mChartView.invalidate();
        }

        protected void setChartSettings(XYMultipleSeriesRenderer renderer,
                String title, String xTitle, String yTitle, double xMin,
                double xMax, double yMin, double yMax, int axesColor,
                int labelsColor) {
            renderer.setChartTitle(title);
            renderer.setXTitle(xTitle);
            renderer.setYTitle(yTitle);
            renderer.setXAxisMin(xMin);
            renderer.setXAxisMax(xMax);
            renderer.setYAxisMin(yMin);
            renderer.setYAxisMax(yMax);
            renderer.setInitialRange(range);
            renderer.clearXTextLabels();
            renderer.setAxesColor(axesColor);

            renderer.setLabelsColor(labelsColor);
        }

        protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
            XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
            renderer.setAxisTitleTextSize(12);
            renderer.setChartTitleTextSize(16);
            renderer.setLabelsTextSize(12);
            renderer.setLegendTextSize(12);
            int length = colors.length;
            for (int i = 0; i < length; i++) {
                SimpleSeriesRenderer r = new SimpleSeriesRenderer();
                r.setColor(colors[i]);
                renderer.addSeriesRenderer(r);
            }
            return renderer;
        }

        protected XYMultipleSeriesDataset buildBarDataset(String[] titles, int j) {
            XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
            int length = titles.length;
            for (int i = 0; i < length; i++) {
                CategorySeries series = new CategorySeries(titles[i]);
                series.add(j);

                dataset.addSeries(series.toXYSeries());
            }
            return dataset;
        }
![enter image description here][1]


  [1]: http://i.stack.imgur.com/rKyjg.png
EN

Stack Overflow用户

发布于 2013-07-11 17:10:40

这可能会解决您的问题:

renderer.getSeriesRendererAt(0).setGradientEnabled(true);

renderer.getSeriesRendererAt(0).setGradientStart(0,Color.rgb(025,117,025);

renderer.getSeriesRendererAt(0).setGradientStop(yMaxVal/2,Color.rgb(94,158,94));

在条形图中的某个点之后,使用setGradientStart和stop来定义颜色。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17103216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档