2013-08-07 10 views
8

मैं लाइन ग्राफ बनाने के लिए Achartengine का उपयोग कर रहा हूं। मेरा वर्तमान महीना दिखा रहा है हालांकि दूसरी पंक्ति, पिछले महीने, यह नहीं दिखा रही है। यहां लॉस और लॉककैट है: इसलिए जब आप लॉगकैट से देख सकते हैं तो मेरी तिथियां सही हैं और पिछले महीने की गिनती भी है। तो यह क्यों नहीं दिख रहा है मेरे बाहर है।Achartengine लाइन ग्राफ

लॉग बिल्ली:

08-07 16:13:43.969: I/PROJECTCARUSO(11734): DEBUG startdate: 2013-07-01 enddate: 2013-07-31 
08-07 16:13:43.969: I/PROJECTCARUSO(11734): count: 9 
08-07 16:13:43.979: I/PROJECTCARUSO(11734): DEBUG startdate: 2013-08-01 enddate: 2013-08-31 

कक्षा:

public class TempHistoryFragment extends Fragment{ 
    private GraphicalView mChartView; 
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     if (container == null) { 
      return null; 
     } 
     Calendar cal = Calendar.getInstance(); 
     Calendar cal2 = Calendar.getInstance(); 
     SimpleDateFormat month_date = new SimpleDateFormat("MMMMMMMMM"); 
     SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd",Locale.US); 
     String month_name = month_date.format(cal.getTime()); 
     ArrayList<Integer> xArray = new ArrayList<Integer>(); 
     ArrayList<Integer> yArray = new ArrayList<Integer>(); 
     ArrayList<Integer> xArray2 = new ArrayList<Integer>(); 
     ArrayList<Integer> yArray2 = new ArrayList<Integer>(); 

     cal.add(Calendar.MONTH ,-1); 
     String prev_month_name = month_date.format(cal.getTime()); 


     int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH); 


     //***********************************************// 
     // Our first data Last MONTH 
     //***********************************************// 
     //start date for cursor 
     //cal.add(Calendar.MONTH, -1); 
     cal.set(Calendar.DATE, 1); 
     String startdate = df.format(cal.getTime()); 

     //end date 
     cal.set(Calendar.DATE, daysInMonth); 
     String enddate = df.format(cal.getTime()); 


     Log.i("PROJECTCARUSO","DEBUG startdate: " + startdate + " enddate: " + enddate); 
     Cursor c = getActivity().getContentResolver().query(StatusProvider.CONTENT_URI_CHARTING, null, "? < " + StatusData.KEY_CHARTING_DATE + " AND ? > " + StatusData.KEY_CHARTING_DATE , new String[] {startdate, enddate}, null); // 
     c.moveToFirst(); 
     Log.i("PROJECTCARUSO","count: " + c.getCount()); 
     if (c.getCount()>0 && c!=null) { 
      while (c.isAfterLast() == false) { 
       if ((isNumeric(c.getString(c.getColumnIndex(StatusData.KEY_CHARTING_TEMPERATURE))))) { 


       java.util.Date date = null; 
       int day = 0; 

       //get date from database 
       String datetest = c.getString(c.getColumnIndex(StatusData.KEY_CHARTING_DATE)); 


       //try to reformat to date. 
       try { 
        date = format.parse(datetest); 
        day = date.getDate(); 
       } catch (java.text.ParseException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       xArray.add(day); 

       } 
      c.moveToNext(); 
      } 
     } 

     int[] x = new int[xArray.size()]; 
     for (int i = 0; i < xArray.size(); i++) { 
      x[i] = xArray.get(i); 
     } 

     int[] y = new int[yArray.size()]; 
     for (int i = 0; i < yArray.size(); i++) { 
      y[i] = yArray.get(i); 
     } 

     TimeSeries series = new TimeSeries(prev_month_name); 
     for(int i = 0; i < y.length; i++) 
     { 
      series.add(x[i], y[i]); 
     } 


     //***********************************************// 
     // Our second data THIS MONTH 
     //***********************************************// 
     //start date for cursor 
     cal2.set(Calendar.DATE, 1); 
     String startdate2 = df.format(cal2.getTime()); 

     //end date 
     cal2.set(Calendar.DATE, daysInMonth); 
     String enddate2 = df.format(cal2.getTime()); 


     Log.i("PROJECTCARUSO","DEBUG startdate: " + startdate2 + " enddate: " + enddate2); 
     Cursor c2 = getActivity().getContentResolver().query(StatusProvider.CONTENT_URI_CHARTING, null, "? < " + StatusData.KEY_CHARTING_DATE + " AND ? > " + StatusData.KEY_CHARTING_DATE , new String[] {startdate2, enddate2}, null); // 
     c2.moveToFirst(); 


     if (c2.getCount()>0 && c2!=null) { 
      while (c2.isAfterLast() == false) { 
       if (isNumeric(c2.getString(c2.getColumnIndex(StatusData.KEY_CHARTING_TEMPERATURE)))){ 

        yArray2.add(c2.getInt(c2.getColumnIndex(StatusData.KEY_CHARTING_TEMPERATURE))); 

        java.util.Date date = null; 
        int day = 0; 

        //get date from database 
        String datetest = c2.getString(c2.getColumnIndex(StatusData.KEY_CHARTING_DATE)); 


        //try to reformat to date. 
        try { 
         date = format.parse(datetest); 
         day = date.getDate(); 
        } catch (java.text.ParseException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

        xArray2.add(day); 

       } 
      c2.moveToNext(); 
      } 
     } 


     int[] x2 = new int[xArray2.size()]; 
     for (int i = 0; i < xArray2.size(); i++) { 
      x2[i] = xArray2.get(i); 
     } 

     int[] y2 = new int[yArray2.size()]; 
     for (int i = 0; i < yArray2.size(); i++) { 
      y2[i] = yArray2.get(i); 
     } 

     TimeSeries series2 = new TimeSeries(month_name); 
     for(int i = 0; i < x2.length; i++) 
     { 
      series2.add(x2[i], y2[i]); 
     } 



     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
     dataset.addSeries(series); 
     dataset.addSeries(series2); 

     XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // Holds a collection of XYSeriesRenderer and customizes the graph 
     XYSeriesRenderer renderer = new XYSeriesRenderer(); // This will be used to customize line 1 
     XYSeriesRenderer renderer2 = new XYSeriesRenderer(); // This will be used to customize line 2 
     mRenderer.addSeriesRenderer(renderer); 
     mRenderer.addSeriesRenderer(renderer2); 

     // Customization time for line 1! 
     renderer.setColor(getResources().getColor(R.color.complementary)); 
     renderer.setPointStyle(PointStyle.SQUARE); 
     renderer.setFillPoints(true); 

     // Customization time for line 2! 
     renderer2.setColor(getResources().getColor(R.color.base)); 
     renderer2.setPointStyle(PointStyle.DIAMOND); 
     renderer2.setFillPoints(true); 

     mChartView = ChartFactory.getLineChartView(getActivity(), dataset, mRenderer); 

     //Set Chart Title and labels 
     mRenderer.setChartTitle("Temperature Tracking"); 
     mRenderer.setChartTitleTextSize(getResources().getDimension(R.dimen.largeText)); 
     mRenderer.setLabelsColor(getResources().getColor(R.color.primaryTextDark)); 

     //YAxis of Temp 
     mRenderer.setYTitle("Temperature", 0); 
     mRenderer.setYAxisMin(80, 0); 
     mRenderer.setYAxisMax(110, 0); 
     mRenderer.setYLabelsAlign(Align.CENTER); 
     mRenderer.setYLabelsColor(0, getResources().getColor(R.color.primaryTextDark)); 

     //XAxis of month 
     mRenderer.setXLabels(20); 
     mRenderer.setXTitle(month_name);   
     mRenderer.setXAxisMin(1); 
     mRenderer.setXAxisMax(daysInMonth); 
     mRenderer.setXLabelsColor(getResources().getColor(R.color.primaryTextDark)); 

     //Set the display 
     mRenderer.setMarginsColor(getResources().getColor(R.color.transparent)); 
     mRenderer.setShowCustomTextGrid(true); 
     mRenderer.setAxisTitleTextSize(getResources().getDimension(R.dimen.mediumText)); 
     mRenderer.setLabelsTextSize(getResources().getDimension(R.dimen.smallMediumText)); 
     mRenderer.setPanEnabled(false, false); 
     mRenderer.setClickEnabled(false); 
     mRenderer.setZoomEnabled(false, false); 


     return mChartView; 

    } 

    @SuppressWarnings("unused") 
    public static boolean isNumeric(String str) 
    { 
     try 
     { 
     double d = Double.parseDouble(str); 
     } 
     catch(NumberFormatException nfe) 
     { 
     return false; 
     } 
     return true; 
    } 

} 

ओह और यहाँ हैं उन रंगों:

<color name ="base">#51bbc2</color> 
    <color name ="complementary">#C25951</color> 

The result

+0

एक स्क्रीनशॉट पोस्ट करें। कोड की 100 पंक्तियों की तुलना में यह अधिक उपयोगी होगा। –

+0

स्क्रीनशॉट जोड़ा गया और इसकी केवल 248 लाइनें, खराब नहीं;) – jcaruso

+1

yArray2 मानों की सीमा क्या है? –

उत्तर

0

धन्यवाद @Dan आप के लिए मेरे नेतृत्व उपाय। मैं यह सुनिश्चित करने के लिए सभी बिंदुओं को चला गया और लॉग इन किया कि सभी सही मूल्य दाएं सरणी में रखे जा रहे हैं और yArray.add(c.getInt(c.getColumnIndex(StatusData.KEY_CHARTING_TEMPERATURE))); को किसी भी तरह से हटा दिया गया है। तो अब यह काम करता है! वाह!

संबंधित मुद्दे