paragp / achartengine

AChartEngine is a charting library for Android applications. It currently supports the following chart types: line chart area chart scatter chart time chart bar chart pie chart bubble chart doughnut chart range (high-low) bar chart dial chart / gauge combined (any combination of line, cubic line, scatter, bar, range bar, bubble) chart cubic line chart All the above supported chart types can contain multiple series, can be displayed with the X axis horizontally (default) or vertically and support many other custom features. The charts can be built as a view that can be added to a view group or as an intent, such as it can be used to start an activity. The model and the graphing code is well optimized such as it can handle and display huge number of values. AChartEngine is currently at the 1.0.0 release. New chart types will be added in the following releases. Please keep sending your feedback such as we can continually improve this library. Find us on Facebook, too: http://www.facebook.com/achartengine Read a short introduction to AChartEngine here: http://www.javaadvent.com/2012/12/achartengine-charting-library-for.html Another good tutorial can be read here: http://jaxenter.com/effort-free-graphs-on-android-with-achartengine-46199.html
0 stars 1 forks source link

Android AchartEngine1.1 bar chart didn't drow nagative value #313

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. draw bar chart
2. android 4.1 draw well negative value
3. but android2.2 didn't draw negative value; positive value draw well;

What is the expected output? What do you see instead?

i want to my app can draw negative value any android version;

Please provide a source code snippet that we can use to replicate the issue.
mDataset = new XYMultipleSeriesDataset();
        mRenderer = new XYMultipleSeriesRenderer();
        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(Color.argb(100, 50, 50, 50));// 
        mRenderer.setXLabels(11);// 
        mRenderer.setYLabels(12);//
        mRenderer.setYLabelsAlign(Align.RIGHT);// 
        mRenderer.setShowLabels(true);
        mRenderer.setShowLegend(false); //
        mRenderer.setXLabelsColor(Color.BLACK);// 
        mRenderer.setLabelsTextSize(19);// 
        mRenderer.setShowGridY(true);
        mRenderer.setShowGridX(true);
        mRenderer.setShowCustomTextGrid(true);
        mRenderer.setMargins(new int[] { 30, 50, 0, 10 });
        mRenderer.setZoomButtonsVisible(false);
        mRenderer.setYAxisMin(-100);//
        mRenderer.setYAxisMax(20);// 
        mRenderer.setXAxisMin(0);//

        mainSpectrum = new XYSeriesRenderer();
        mainSpectrum.setColor(Color.WHITE);
        mainSpectrum.setPointStyle(PointStyle.POINT);
        mainSpectrum.setFillPoints(true);
        mRenderer.setPointSize(5);
        peakSpectrum = new XYSeriesRenderer();
        peakSpectrum.setPointStyle(PointStyle.DIAMOND);
        peakSpectrum.setColor(Color.RED);
        peakSpectrum.setFillPoints(true);
        mRenderer.setPointSize(5);
        minSpectrum = new XYSeriesRenderer();
        minSpectrum.setPointStyle(PointStyle.SQUARE);
        minSpectrum.setColor(Color.rgb(0, 216, 255));
        minSpectrum.setFillPoints(true);
        mRenderer.setPointSize(5);

    dataSeries = new XYSeries("01");
        if(SpectrumActivity.startEndSet==false){//startend,centerspan 
            for (byte item : showData) {
                double temp = ((item & 0xff) * 100 / 255.0) * (-1);
                if (temp > maxY) {
                    maxY = temp;
                    maxX = index;
                }
                if(temp < minY){
                    minY = temp;
                    minX = index;
                }
//              dataSeries.add(index, temp+(offsetValue/10)+indicatorValue * 10);
                dataSeries.add(index, temp+indicatorValue * 10);
                index++;
            }
        }else{
            int tempIndex=0;
            for(index = (int) SpectrumActivity.startXAxis; index < SpectrumActivity.endXAxis+1;index++){
                double temp = ((showData[index] & 0xff) * 100 / 255.0) * (-1);
                if (temp > maxY) {
                    maxY = temp;
                    maxX = tempIndex;
                }
                if(temp < minY){
                    minY = temp;
                    minX = tempIndex;
                }
//              dataSeries.add(tempIndex, temp+(offsetValue/10)+indicatorValue * 10);
                dataSeries.add(tempIndex, temp+indicatorValue * 10);
                tempIndex++;
            }
            mRenderer.setXAxisMax(tempIndex);
        }
        mDataset.addSeries(dataSeries);

        peakSeries = new XYSeries("02");
        peakSeries.add(maxX, dataSeries.getMaxY());
        mDataset.addSeries(peakSeries);

        minSeries = new XYSeries("03");
        minSeries.add(minX, dataSeries.getMinY());
        mDataset.addSeries(minSeries);

        faTop = new XYSeries("04");
        faTop.add(faStart*10, (int)-(indicatorValue * -10)-150);
        faTop.add(faEnd*10, (int)-(indicatorValue * -10)-150) ;
        mDataset.addSeries(faTop);

        faBottom = new XYSeries("05");
        faBottom.add(faStart*10, (int)(indicatorValue * -10)+150);
        faBottom.add(faEnd*10, (int)(indicatorValue * -10)+150);
        mDataset.addSeries(faBottom);

        mRenderer.addSeriesRenderer(mainSpectrum);

        mRenderer.addSeriesRenderer(peakSpectrum);

        mRenderer.addSeriesRenderer(minSpectrum);

        mRenderer.setBarSpacing(90);

        faTopSpectrum = new XYSeriesRenderer();
        faTopSpectrum.setColor(Color.GREEN);
        mRenderer.addSeriesRenderer(faTopSpectrum);

        faBottomSpectrum = new XYSeriesRenderer();
        faBottomSpectrum.setColor(Color.GREEN);
        mRenderer.addSeriesRenderer(faBottomSpectrum);

        if (SpectrumActivity.startEndSet == true) {
            min = (SpectrumActivity.startXAxis / 10) + getBandFrequency();
            max = (SpectrumActivity.endXAxis / 10) +  getBandFrequency();
            startMHz.setText(String.format("%.2f",(min)) + " MHz");
            endMHz.setText(String.format("%.2f", max) + " MHz");
            SpectrumActivity.timeDomainStartFreq = (int) min;
            SpectrumActivity.timeDomainEndFreq = (int) max;
            step.setText(String.format("%.2f", ((max- min)/ 10)) +" MHz");
        } else {
            startMHz.setText(String.format("%.2f", (startFrequencyValue+ getBandFrequency()))+ " MHz");
            SpectrumActivity.timeDomainStartFreq = (int) (startFrequencyValue+ getBandFrequency());
//          System.out.println("NomralSpectrum to TimeDomainStart "+ 
SpectrumActivity.timeDomainStartFreq );
            endMHz.setText(String.format("%.2f", (endFrequencyValue+  getBandFrequency()))+ " MHz");
            SpectrumActivity.timeDomainEndFreq = (int) (endFrequencyValue+  getBandFrequency());
//          System.out.println("NomralSpectrum to TimeDomainEnd "+ 
SpectrumActivity.timeDomainEndFreq );
            step.setText(String.format("%.2f", ((endFrequencyValue - startFrequencyValue)/ 10)) +" MHz");
        }

        mRenderer.setYAxisMin(-100 + indicatorValue * 10);
        mRenderer.setYAxisMax(20 + indicatorValue * 10);
What version of the product binary library are you using?
AchartEngine1.1

Please provide any additional information below.

my english skill is not good, please understand my explanation;

Original issue reported on code.google.com by simsoolt...@gmail.com on 7 Jun 2013 at 9:02

Attachments:

GoogleCodeExporter commented 9 years ago
Try this version of the library and let me know if it works:
https://repository-achartengine.forge.cloudbees.com/snapshot/org/achartengine/ac
hartengine/1.2.0/

Original comment by dandrome...@gmail.com on 7 Jun 2013 at 10:18

GoogleCodeExporter commented 9 years ago
Thank you so much!!!
This version works very well!!

Original comment by simsoolt...@gmail.com on 10 Jun 2013 at 1:10

GoogleCodeExporter commented 9 years ago

Original comment by dandrome...@gmail.com on 10 Jun 2013 at 6:16