如何在AchartEngine中为两个x网格之间的空间设置背景色

曼尼坎丹

我已经使用AchartEngine创建了条形图。我喜欢为两个x网格之间的空间设置不同的颜色,如下图所示。以及如何删除每个轴标签中的“-”符号。(需要删除4hr-中存在的“-”)。如果无法设置颜色,我只想显示4个y标签,其中最高的值在顶部。而且我也想自己修复两个标签之间的空间。我还需要为y标签添加hr或其他文本。下面的代码是我使用的代码,并且在某些设备中值为0的情况下也会显示一条细线。我不希望这样,如果值大于0,则只应显示小节。我得到这样的。我希望图表像问题末尾的一样。在此处输入图片说明

        int largest = y[0];
        for (int i = 1; i < y.length; i++) {
            if (y[i] > largest) {
                largest = y[i];
            }
        }
        CategorySeries series = new CategorySeries("");
        for (int i = 0; i < y.length; i++) {

            series.add("Bar" + (i + 1), y[i]);
        }

        XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset();
        dataSet.addSeries(series.toXYSeries()); // number of series

        // customization of the chart

        XYSeriesRenderer renderer = new XYSeriesRenderer(); // one renderer for
                                                            // one series
        renderer.setColor(Color.RED);
        renderer.setDisplayChartValues(false);
        renderer.setChartValuesSpacing((float) 5.5d);
        renderer.setLineWidth((float) 1.5d);

        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();

        mRenderer.addSeriesRenderer(renderer);
        // mRenderer.setChartTitle("Demo Graph");
        // mRenderer.setXTitle("xValues");

        mRenderer.setYTitle("minutes");

        mRenderer.setLabelsColor(getResources().getColor(R.color.txt_blue));

        mRenderer.setShowGridX(false); // this will show the grid in graph
        mRenderer.setShowGridY(false);
        // mRenderer.setAntialiasing(true);
        mRenderer.setBarSpacing(.5); // adding spacing between the line or
                                        // stacks
        // mRenderer.setApplyBackgroundColor(true);
        // mRenderer.setBackgroundColor(Color.BLACK);
        mRenderer.setXAxisMin(0);
        mRenderer.setYAxisMin(0);
        mRenderer.setXAxisMax(7);
        mRenderer.setZoomInLimitY(10);
        if (largest < 6) {
            mRenderer.setYAxisMax(6);
        } else {
            mRenderer.setYAxisMax(largest);
        }
        mRenderer.setScale(4);

        mRenderer.setXLabels(0);
        mRenderer.addXTextLabel(1, "Sun");
        mRenderer.addXTextLabel(2, "Mon");
        mRenderer.addXTextLabel(3, "Tue");
        mRenderer.addXTextLabel(4, "Wed");
        mRenderer.addXTextLabel(5, "Thu");
        mRenderer.addXTextLabel(6, "Fri");
        mRenderer.addXTextLabel(7, "Sat");
        // mRenderer.setYLabels(0);
        //
        // mRenderer.addYTextLabel(2, "2 min");
        //
        // mRenderer.addYTextLabel(4, "4 min");
        //
        // mRenderer.addYTextLabel(6, "6 min");
        // mRenderer.addYTextLabel(7, "Sat");
        mRenderer.setXLabelsColor(getResources().getColor(R.color.txt_blue));
        mRenderer.setYLabelsColor(0, getResources().getColor(R.color.txt_blue));
        mRenderer.setLabelsColor(getResources().getColor(R.color.txt_blue));
        // mRenderer.setYLabelsAlign(Align.RIGHT);
        mRenderer.setYLabelsPadding(20);
        mRenderer.setPanEnabled(false, false);
        mRenderer.setZoomEnabled(false, false);
        mRenderer.setPanEnabled(false, false); // will fix the chart position
        // Intent intent = ChartFactory.getBarChartIntent(context, dataSet,
        // mRenderer,Type.DEFAULT);
        mRenderer.setBarSpacing(1);
        // mRenderer.setYLabelsPadding(5);
        mRenderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01));
        mRenderer.setShowAxes(false);
        // mRenderer.setXAxisMin(-0.5);
        // 1080 x 1920
        if (screen_width == 480 && screen_height == 800) {

            mRenderer.setAxisTitleTextSize(15);
            mRenderer.setLabelsTextSize(15);
        } else if (screen_width > 480 && screen_width < 1000
                && screen_height > 800 && screen_height < 1700) {
            mRenderer.setAxisTitleTextSize(20);
            mRenderer.setLabelsTextSize(20);
        }

        else if (screen_width > 1000 && screen_height > 1700) {
            mRenderer.setAxisTitleTextSize(30);
            mRenderer.setLabelsTextSize(30);
        } else if (screen_width < 480 && screen_height < 800) {
            mRenderer.setAxisTitleTextSize(10);
            mRenderer.setLabelsTextSize(10);
        }

        mRenderer.setShowLegend(false);

        mChart = (GraphicalView) ChartFactory.getBarChartView(getBaseContext(),
                dataSet, mRenderer, Type.DEFAULT);

        // Adding the Line Chart to the LinearLayout
        chartContainer.addView(mChart);

在此处输入图片说明

bo

两件事情:

  • The way I get this kind of backgrounds is to add stacked bar series with one value on the x-axis and as much values on the y-axis as you need. Than render this stacked bar first and let the real bar chart render on top of it. The other way, to set the background color transparent and have a background drawable behind the chart, is difficult. I tried that but I didn't find a way to synchronize the background with the value in the chart (basically I gave up on this and was succesful with the `Background-series").

  • Eliminate the dash: My idea was, to set the dash to an transparent color. But the color depends in AChartEngine on the color of the labels, not - as one might expect - on the color of the axis. So, without rewriting parts of the Renderer it's not possible in this version (currently 1.1) to eliminate the dash on a value.

编辑:第一点的例子。

这是一些简短的代码,可以为其本身提供背景。

public Intent execute(Context context) {
    // The demo source counts series by number of titles here
    String[] titles = new String[] { "The Background", "", "" };

    // "stacked" values. The highest first. It's printed first.
    List<double[]> values = new ArrayList<double[]>();
    values.add(new double[] { 6d, 6d, 6d, 6d, 6d, 6d, 6d });
    values.add(new double[] { 4d, 4d, 4d, 4d, 4d, 4d, 4d });
    values.add(new double[] { 2d, 2d, 2d, 2d, 2d, 2d, 2d });

    // Background colors. Here blue and white to actually differentiate it
    int[] colors = new int[] { Color.BLUE, Color.WHITE, Color.BLUE};

   // Some settings for the renderer. Change as necessary
    XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
    setChartSettings(
        renderer, "", "", "", 1d, 7d, 0d, 6d,
        Color.TRANSPARENT, Color.TRANSPARENT);
    renderer.setXLabels(0);
    renderer.setYLabels(0);
    renderer.setPanEnabled(false, false);
    renderer.setZoomEnabled(false);
    renderer.setBarSpacing(0d);
    renderer.setShowLegend(false);

    // done. start activity with given intent
    return ChartFactory.getBarChartIntent(
        context, buildBarDataset(titles, values), renderer, Type.STACKED);
}
  • 我使用了演示源,以使代码尽可能短。我使用的方法是buildBarRendererbuildBarDatasetsetChartSettings您可以在AbstractDemoChart课堂上找到它们

    • 最小值和最大值硬编码为1-7(适用于工作日)和0-6(适用于y值)。同样,设置只是保留所有装饰。在您的情况下,请按照示例中的说明进行设置。

    • 由于aChartEngine并没有堆叠条形图的真正概念-它只是将条形图绘制在彼此的后面,因此可以在其他条形图的上方看到具有最高值的条形图-您只需要现在将值添加到新值列表的末尾系列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在AchartEngine中为两个x网格之间的空间设置背景色

来自分类Dev

如何在CSS中为一个元素设置两种背景色?

来自分类Dev

如何使用两个按钮将表格单元格(td)的背景色设置为不同的颜色?

来自分类Dev

如何在两个flexbox之间设置空间

来自分类Dev

如何在范围搜索栏中的两个拇指之间设置渐变颜色背景?

来自分类Dev

如何在Javascript中获取元素的背景色(设置为RGBA)?

来自分类Dev

如何在TTTAtributedLabel中设置范围的背景色

来自分类Dev

如何在Android中设置包含背景色

来自分类Dev

如何在Qt中设置QPushButton的背景色的动画?

来自分类Dev

如何在UIImageView中设置透明背景色

来自分类Dev

如何在vscode中更改设置输入背景色?

来自分类Dev

如何在Flutter中设置布局元素的背景色

来自分类Dev

如何在OpenGL中设置背景色

来自分类Dev

如何在WPF中设置标签的背景色?

来自分类Dev

如何在一个标签中设置不同面板的背景色?

来自分类Dev

如何在WPF中为两个文本框网格动态设置字体大小

来自分类Dev

如何根据列中的某个值为ag网格中的整个行提供背景色?

来自分类Dev

如何在两个单元格之间设置空间

来自分类Dev

如何在全局C#中为Winform中的所有文本框设置背景色?

来自分类Dev

如何在Windows Phone 8.1中将图标和背景色设置为Combox项

来自分类Dev

如何在两个textview之间添加空间

来自分类Dev

如何在Bootstrap中删除不同列中两个div之间的空间

来自分类Dev

如何在C#中将RichTextBox的背景色设置为透明

来自分类Dev

如何在rightBarButtonItems中的两个UIBarButtonItem之间调整空间

来自分类Dev

如何在引导程序3中的两个孔之间增加空间?

来自分类Dev

如何在android view pager中删除两个片段之间的空间?

来自分类Dev

如何在RelativeLayout中填充两个视图之间的空间

来自分类Dev

如何在Python Dash中的两个dcc组件之间留出空间?

来自分类Dev

如何在引导程序中的两个文本框之间留出空间

Related 相关文章

  1. 1

    如何在AchartEngine中为两个x网格之间的空间设置背景色

  2. 2

    如何在CSS中为一个元素设置两种背景色?

  3. 3

    如何使用两个按钮将表格单元格(td)的背景色设置为不同的颜色?

  4. 4

    如何在两个flexbox之间设置空间

  5. 5

    如何在范围搜索栏中的两个拇指之间设置渐变颜色背景?

  6. 6

    如何在Javascript中获取元素的背景色(设置为RGBA)?

  7. 7

    如何在TTTAtributedLabel中设置范围的背景色

  8. 8

    如何在Android中设置包含背景色

  9. 9

    如何在Qt中设置QPushButton的背景色的动画?

  10. 10

    如何在UIImageView中设置透明背景色

  11. 11

    如何在vscode中更改设置输入背景色?

  12. 12

    如何在Flutter中设置布局元素的背景色

  13. 13

    如何在OpenGL中设置背景色

  14. 14

    如何在WPF中设置标签的背景色?

  15. 15

    如何在一个标签中设置不同面板的背景色?

  16. 16

    如何在WPF中为两个文本框网格动态设置字体大小

  17. 17

    如何根据列中的某个值为ag网格中的整个行提供背景色?

  18. 18

    如何在两个单元格之间设置空间

  19. 19

    如何在全局C#中为Winform中的所有文本框设置背景色?

  20. 20

    如何在Windows Phone 8.1中将图标和背景色设置为Combox项

  21. 21

    如何在两个textview之间添加空间

  22. 22

    如何在Bootstrap中删除不同列中两个div之间的空间

  23. 23

    如何在C#中将RichTextBox的背景色设置为透明

  24. 24

    如何在rightBarButtonItems中的两个UIBarButtonItem之间调整空间

  25. 25

    如何在引导程序3中的两个孔之间增加空间?

  26. 26

    如何在android view pager中删除两个片段之间的空间?

  27. 27

    如何在RelativeLayout中填充两个视图之间的空间

  28. 28

    如何在Python Dash中的两个dcc组件之间留出空间?

  29. 29

    如何在引导程序中的两个文本框之间留出空间

热门标签

归档