public void formatChartDataNoThread(
      final List<BankModel> posts, final LineChart chart, final Context context) {
    final ArrayList<String> cashXVals = new ArrayList<String>();
    final ArrayList<Entry> cashYVals1 = new ArrayList<Entry>();
    final ArrayList<Entry> credYVals1 = new ArrayList<Entry>();
    addXandYCoords(posts, cashXVals, cashYVals1, credYVals1);
    LineDataSet set = new LineDataSet(cashYVals1, "DataSet 1");
    LineDataSet set2 = new LineDataSet(credYVals1, "DataSet 2");
    formatDataSet(set, Color.parseColor("#4CAF50"));
    formatDataSet(set2, Color.parseColor("#F44336"));

    ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
    dataSets.add(set);
    dataSets.add(set2);
    LineData data = new LineData(cashXVals, dataSets);
    CustomMarkerView mv = new CustomMarkerView(context, R.layout.marker_view);
    chart.setTouchEnabled(true);
    chart.setMarkerView(mv);
    chart.setData(data);
    chart.setDescription("");
    chart.invalidate();
  }
  /**
   * There is one chart for each signal type. Returns the chart component of a specific signal type.
   *
   * @return
   */
  public LineChart getChart(String signalTypeId) {
    if (!charts.containsKey(signalTypeId)) {
      // Create a chart component
      // chart = (LineChart) findViewById(R.id.chart);
      final LineChart chart = new LineChart(this);
      // chart.setUnit("Db");
      chart.setUnit("");
      // chart.setDrawUnitsInChart(true);
      chart.setDrawYValues(false);
      chart.setDrawBorder(false);
      chart.setTouchEnabled(true);
      chart.setDragEnabled(true);
      chart.setNoDataTextDescription("No data gathered.");
      chart.setDescription("Samples");
      chart.setPinchZoom(true); // if disabled, scaling can be done on x- and y-axis separately
      // set an alternative background color
      // mChart.setBackgroundColor(Color.GRAY)

      // Creates a chart tab.
      // http://www.java2s.com/Code/Android/UI/DynamicTabDemo.htm
      // http://www.java2s.com/Code/Android/UI/UsingatabcontentfactoryforthecontentviaTabHostTabSpecsetContentandroidwidgetTabHostTabContentFactory.htm
      TabHost.TabSpec spec = tabHost.newTabSpec(signalTypeId);
      spec.setIndicator(signalTypeId);
      spec.setContent(
          new TabHost.TabContentFactory() {
            public View createTabContent(String tag) {
              return chart;
            }
          });
      tabHost.addTab(spec);
      // addContentToTab(tabHost.getChildCount(), chart);

      charts.put(signalTypeId, chart);
      tabHost.invalidate();
    }

    return charts.get(signalTypeId);
  }
Exemple #3
0
  @Override
  public View onCreateView(
      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    rootView = inflater.inflate(R.layout.kommfort, container, false);
    RelativeLayout relativ = (RelativeLayout) rootView.findViewById(R.id.bak);

    mLineChart = (LineChart) relativ.findViewById(R.id.linechartkommfort);
    mLineChart.setOnChartValueSelectedListener(this);

    // no description text
    mLineChart.setDescription("Beschleunigungskraefte");
    mLineChart.setNoDataTextDescription("You need to provide data for the chart.");

    // enable highlighting
    mLineChart.setHighlightEnabled(true);

    // enable touch gestures
    mLineChart.setTouchEnabled(true);

    // enable scaling and dragging
    mLineChart.setDragEnabled(true);
    mLineChart.setScaleEnabled(true);
    mLineChart.setDrawGridBackground(false);

    // if disabled, scaling can be done on x- and y-axis separately
    mLineChart.setPinchZoom(true);

    // set an alternative background color
    mLineChart.setBackgroundColor(Color.WHITE);

    LineData data = new LineData();
    data.setValueTextColor(Color.BLACK);

    // add empty data
    mLineChart.setData(data);

    // get the legend (only possible after setting data)
    Legend l = mLineChart.getLegend();

    // modify the legend ...
    // l.setPosition(LegendPosition.LEFT_OF_CHART);
    l.setForm(Legend.LegendForm.LINE);

    l.setTextColor(Color.BLACK);

    XAxis xl = mLineChart.getXAxis();

    xl.setTextColor(Color.BLACK);
    xl.setDrawGridLines(false);
    xl.setAvoidFirstLastClipping(true);

    YAxis leftAxis = mLineChart.getAxisLeft();

    leftAxis.setTextColor(Color.BLACK);
    leftAxis.setAxisMaxValue(2f);
    leftAxis.setAxisMinValue(-2f);
    leftAxis.setStartAtZero(false);
    leftAxis.setDrawGridLines(true);

    YAxis rightAxis = mLineChart.getAxisRight();
    rightAxis.setEnabled(false);

    Button zukamm = (Button) rootView.findViewById(R.id.butonzumkreis);
    // TextView zubesh=(TextView) rootView.findViewById(R.id.zubeschleunigungskraefte);

    // Layout button=(Layout) rootView.findViewById(R.id.);

    zukamm.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            Intent intent = new Intent(getActivity(), KammsherKreis.class);
            Kommfort.this.startActivity(intent);
          }
        });

    /**
     * zubesh.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {
     * Intent myIntent = new Intent(getActivity(), Beschleunigungskraefte.class);
     * getActivity().startActivityForResult(myIntent,100); } });
     */
    return rootView;
  }
  public void drawLineChart(
      View v,
      int averageCrowdValue,
      List<Integer> todaysCrowdValues,
      List<Integer> rodCrowdValues) {

    /* Create data entries1 and labels for todaysCrowd Values*/
    ArrayList<Entry> entries1 = new ArrayList<>();
    ArrayList<String> labels = new ArrayList<>();
    for (int hour = 0; hour < todaysCrowdValues.size(); hour++) {
      entries1.add(new Entry(todaysCrowdValues.get(hour), hour));
      labels.add("" + hour);
    }

    /* Create data entries2 and labels for rodCrowdValues Values*/
    ArrayList<Entry> entries2 = new ArrayList<>();
    for (int hour = 0; hour < rodCrowdValues.size(); hour++) {
      entries2.add(new Entry(rodCrowdValues.get(hour), hour + todaysCrowdValues.size()));
      labels.add("" + (hour + todaysCrowdValues.size()));
    }

    /* Create dataentires for averageCrowdValue */
    ArrayList<Entry> entries3 = new ArrayList<>();
    entries3.add(new Entry(averageCrowdValue, 0));
    entries3.add(new Entry(averageCrowdValue, 23));

    // Create dataset from data entries1
    LineDataSet dataset1 = new LineDataSet(entries1, "Today's Crowd");
    LineDataSet dataset2 = new LineDataSet(entries2, "Predicted Crowd");
    LineDataSet dataset3 = new LineDataSet(entries3, "Average Crowd");

    // Set the color for this dataset
    dataset1.setColor(Color.rgb(0, 37, 76)); // GT Navy
    dataset2.setColor(Color.rgb(238, 178, 17)); // Buzz Gold
    dataset3.setColor(Color.rgb(197, 147, 83)); // GT Gold

    // Aggregate all data sets
    ArrayList<LineDataSet> dataSets = new ArrayList<LineDataSet>();
    dataSets.add(dataset1);
    dataSets.add(dataset2);
    dataSets.add(dataset3);

    /* Create the chart */
    LineChart chart = (LineChart) v.findViewById(R.id.chart);

    // Hide Labels and grid lines from x axis
    chart.getXAxis().setDrawGridLines(false);
    chart.getXAxis().setDrawLabels(false);

    // Hide labels and grid lines from y axis
    chart.getAxisLeft().setDrawGridLines(false);
    chart.getAxisLeft().setDrawLabels(false);
    chart.getAxisRight().setDrawGridLines(false);
    chart.getAxisRight().setDrawLabels(false);

    // Dont label each node on graph
    chart.setDrawMarkerViews(false);
    LineData data = new LineData(labels, dataSets);
    chart.setData(data);

    chart.setDescription("Today's Crowd");

    // animations
    chart.animateY(1000);
  }
  public View onCreateView(
      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    LineView = inflater.inflate(R.layout.analysis_bar, container, false);
    initView();

    // no description text
    mChart.setDescription("");

    // enable value highlighting
    mChart.setHighlightEnabled(true);

    // enable touch gestures
    mChart.setTouchEnabled(true);

    // enable scaling and dragging
    mChart.setDragEnabled(true);
    mChart.setScaleEnabled(true);

    // if disabled, scaling can be done on x- and y-axis separately
    mChart.setPinchZoom(false);

    mChart.setDrawGridBackground(true);

    //  tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");

    XAxis x = mChart.getXAxis();
    //  x.setTypeface(tf);
    x.setEnabled(true);

    YAxis y = mChart.getAxisLeft();
    //  y.setTypeface(tf);
    y.setLabelCount(5);
    y.setEnabled(true);

    mChart.getAxisRight().setEnabled(true);

    // add data
    catchData();

    Date dt = new Date();
    SimpleDateFormat matter1 = new SimpleDateFormat("dd");
    int days = Integer.parseInt(matter1.format(dt));
    log.e("days = " + days);
    setData(days - 9, 10, 100);

    mChart.getLegend().setEnabled(true);

    mChart.animateXY(2000, 2000);

    // dont forget to refresh the drawing
    /*ArrayList<LineDataSet> sets = (ArrayList<LineDataSet>) mChart.getData()
            .getDataSets();

    for (LineDataSet set : sets) {
        if (set.isDrawCubicEnabled())
            set.setDrawCubic(false);
        else
            set.setDrawCubic(true);
    }*/
    mChart.invalidate();

    return LineView;
  }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow()
        .setFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_linechart);

    tvX = (TextView) findViewById(R.id.tvXMax);
    tvY = (TextView) findViewById(R.id.tvYMax);

    mSeekBarX = (SeekBar) findViewById(R.id.seekBar1);
    mSeekBarY = (SeekBar) findViewById(R.id.seekBar2);

    mSeekBarX.setProgress(45);
    mSeekBarY.setProgress(100);

    mSeekBarY.setOnSeekBarChangeListener(this);
    mSeekBarX.setOnSeekBarChangeListener(this);

    mChartView = (ChartView) findViewById(R.id.chart1);
    mChart = (LineChart) mChartView.getChart();
    mChart.setOnChartValueSelectedListener(this);

    // if enabled, the chart will always start at zero on the y-axis
    mChart.setStartAtZero(true);

    // enable the drawing of values into the chart
    mChart.setDrawYValues(true);

    mChart.setDrawBorder(true);
    mChart.setBorderPositions(new BorderPosition[] {BorderPosition.BOTTOM});

    // no description text
    mChart.setDescription("");

    // invert the y-axis
    mChart.setInvertYAxisEnabled(true);

    // enable value highlighting
    mChart.setHighlightEnabled(true);

    // enable touch gestures
    mChart.setTouchEnabled(true);

    // enable scaling and dragging
    mChart.setDragEnabled(true);
    mChart.setScaleEnabled(true);

    // if disabled, scaling can be done on x- and y-axis separately
    mChart.setPinchZoom(true);

    // set an alternative background color
    // mChart.setBackgroundColor(Color.GRAY);

    // create a custom MarkerView (extend MarkerView) and specify the layout
    // to use for it
    MyMarkerView mv = new MyMarkerView(this, R.layout.custom_marker_view);

    // define an offset to change the original position of the marker
    // (optional)
    mv.setOffsets(-mv.getMeasuredWidth() / 2, -mv.getMeasuredHeight());

    // set the marker to the chart
    mChart.setMarkerView(mv);

    // enable/disable highlight indicators (the lines that indicate the
    // highlighted Entry)
    mChart.setHighlightIndicatorEnabled(false);

    XLabels xl = mChart.getXLabels();
    xl.setAvoidFirstLastClipping(true);

    // add data
    setData(25, 50);

    // // restrain the maximum scale-out factor
    // mChart.setScaleMinima(3f, 3f);
    //
    // // center the view to a specific position inside the chart
    // mChart.centerViewPort(10, 50);

    // get the legend (only possible after setting data)
    Legend l = mChart.getLegend();

    // modify the legend ...
    // l.setPosition(LegendPosition.LEFT_OF_CHART);
    l.setForm(LegendForm.LINE);

    // dont forget to refresh the drawing
    mChartView.invalidate();
  }
  private void drawChart() {
    BPRecord[] recs = mRecords;
    LineChart chart = (LineChart) findViewById(R.id.chart);
    ArrayList<Entry> valsHigh = new ArrayList<Entry>();
    ArrayList<Entry> valsLow = new ArrayList<Entry>();
    // ArrayList<Entry> heartRate = new ArrayList<Entry>();
    // ArrayList<Entry> o2Index = new ArrayList<Entry>();
    // ArrayList<Entry> avgArtP = new ArrayList<Entry>();
    ArrayList<String> xVals = new ArrayList<String>();
    Date firstTime = null;
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    SimpleDateFormat f2 = new SimpleDateFormat("MM/dd HH:mm");
    for (int i = 0; i < recs.length; ++i) {
      BPRecord rec = recs[i];
      int x = 0; // minutes from first data
      Date time = new Date();
      try {
        time = f.parse(rec.dateTime);
      } catch (ParseException ex) {
        Log.d("GetBPDate", "Exception:" + ex.toString());
        continue;
      }
      if (firstTime == null) {
        firstTime = time;
      } else {
        x = (int) ((time.getTime() - firstTime.getTime()) / 60000);
      }
      x = i;
      xVals.add(f2.format(time));
      valsHigh.add(new Entry(rec.systolic, x));
      valsLow.add(new Entry(rec.diastolic, x));
      // heartRate.add(new Entry(rec.heartRate,x));
      // avgArtP.add(new Entry(rec.avg_art_pressure,x));
      // o2Index.add(new Entry(rec.o2Index/100,x));
    }
    String hp = getResources().getString(R.string.hightPressure);
    String lp = getResources().getString(R.string.lowPressure);
    /*
    String hr = getResources().getString(R.string.heartBeatLabel);
    String avgAP = getResources().getString(R.string.average_artery_pressure);
    String o2 = getResources().getString(R.string.O2Index);
    */
    LineDataSet setHigh = new LineDataSet(valsHigh, hp);
    setHigh.setAxisDependency(YAxis.AxisDependency.LEFT);
    setHigh.setDrawCircles(false);
    setHigh.setColor(Color.RED);
    setHigh.setValueFormatter(new IntFormatter());
    setHigh.setValueTextSize(10);
    LineDataSet setLow = new LineDataSet(valsLow, lp);
    setLow.setAxisDependency(YAxis.AxisDependency.LEFT);
    setLow.setColor(Color.BLUE);
    setLow.setDrawCircles(false);
    setLow.setValueFormatter(new IntFormatter());
    setLow.setValueTextSize(10);
    /*
    LineDataSet setHr = new LineDataSet(heartRate, hr);
    setHr.setAxisDependency(YAxis.AxisDependency.LEFT);
    setHr.setColor(Color.GREEN);
    setHr.setDrawCircles(false);
    setHr.setValueFormatter(new IntFormatter());
    setHr.setValueTextSize(10);
    LineDataSet setAAP = new LineDataSet(avgArtP, avgAP);
    setAAP.setAxisDependency(YAxis.AxisDependency.LEFT);
    setAAP.setColor(Color.DKGRAY);
    setAAP.setDrawCircles(false);
    setAAP.setValueFormatter(new IntFormatter());
    setAAP.setValueTextSize(10);
    LineDataSet setO2 = new LineDataSet(o2Index, o2);
    setO2.setAxisDependency(YAxis.AxisDependency.LEFT);
    setO2.setColor(Color.CYAN);
    setO2.setDrawCircles(false);
    setO2.setValueFormatter(new IntFormatter());
    setO2.setValueTextSize(10);
    */
    ArrayList<LineDataSet> dataSets = new ArrayList<LineDataSet>();
    dataSets.add(setHigh);
    dataSets.add(setLow);
    /*
    dataSets.add(setHr);
    dataSets.add(setAAP);
    dataSets.add(setO2);
    */

    /*
    xVals.add("12-15"); xVals.add("12-17"); xVals.add("12-18"); xVals.add("12-20");
    xVals.add("12-21"); xVals.add("12-22"); xVals.add("12-23"); xVals.add("12-24");
    */

    LineData data = new LineData(xVals, dataSets);
    // chart.setGridBackgroundColor(Color.BLACK);
    // chart.getLegend().setEnabled(false);
    chart.setData(data);
    chart.setDescription(getResources().getString(R.string.blood_pressure));
    chart.invalidate(); // refresh
  }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //        setContentView(R.layout.activity_realtime_chart);
    //        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    //        setSupportActionBar(toolbar);

    getWindow()
        .setFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_realtime_chart);

    //        mChart = (LineChart) findViewById(R.id.chart1);
    mChart.setOnChartValueSelectedListener(this);

    mChart.setDescription("Sleep Cycle live chart");
    mChart.setNoDataTextDescription("No sleep data available.");

    mChart.setTouchEnabled(true);

    mChart.setDragEnabled(true);
    mChart.setScaleEnabled(true);

    mChart.setPinchZoom(true);

    LineData data = new LineData();

    mChart.setData(data);

    Typeface tf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");

    Legend l = mChart.getLegend();
    l.setForm(Legend.LegendForm.LINE);
    l.setTypeface(tf);
    l.setTextColor(Color.WHITE);

    XAxis xl = mChart.getXAxis();
    xl.setTypeface(tf);
    xl.setTextColor(Color.WHITE);
    xl.setDrawGridLines(false);
    xl.setAvoidFirstLastClipping(true);
    xl.setSpaceBetweenLabels(5);
    xl.setEnabled(true);

    YAxis leftAxis = mChart.getAxisLeft();
    leftAxis.setTypeface(tf);
    leftAxis.setTextColor(Color.WHITE);
    leftAxis.setAxisMaxValue(100f);
    leftAxis.setAxisMinValue(0f);
    leftAxis.setStartAtZero(false);
    leftAxis.setDrawGridLines(true);

    YAxis rightAxis = mChart.getAxisRight();
    rightAxis.setEnabled(false);

    //        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    //        fab.setOnClickListener(new View.OnClickListener() {
    //            @Override
    //            public void onClick(View view) {
    //                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
    //                        .setAction("Action", null).show();
    //            }
    //        });
  }
  @Override
  public View onCreateView(
      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_status, container, false);

    // TODO Need lot of design changes in chart
    // TODO Have to update LineChart with CombineChart to display LineChart with BarChart
    mChart = (LineChart) view.findViewById(R.id.chartInsight);
    mChart.setDescription("");
    mChart.setBackgroundColor(Color.WHITE);
    mChart.setDrawGridBackground(false);

    LineData d = new LineData();
    ArrayList<Entry> entries = new ArrayList<>();

    for (int index = 0; index < 12; index++) entries.add(new Entry(getRandom(25, 10), index));

    LineDataSet set = new LineDataSet(entries, "DataSet1");
    set.setColor(Color.rgb(240, 238, 70));
    set.setLineWidth(2.5f);
    set.setCircleColor(Color.rgb(240, 238, 70));
    set.setCircleSize(5f);
    set.setFillColor(Color.rgb(240, 238, 70));
    set.setDrawCubic(true);
    set.setDrawValues(true);
    set.setValueTextSize(10f);
    set.setValueTextColor(Color.rgb(240, 238, 70));

    for (int index = 0; index < 12; index++) entries.add(new Entry(getRandom(25, 10), index));

    LineDataSet set2 = new LineDataSet(entries, "DataSet2");
    set.setColor(Color.rgb(240, 238, 70));
    set.setLineWidth(2.5f);
    set.setCircleColor(Color.rgb(240, 238, 70));
    set.setCircleSize(5f);
    set.setFillColor(Color.rgb(240, 238, 70));
    set.setDrawCubic(true);
    set.setDrawValues(true);
    set.setValueTextSize(10f);
    set.setValueTextColor(Color.rgb(240, 238, 70));

    set.setAxisDependency(YAxis.AxisDependency.LEFT);

    d.addDataSet(set);
    d.addDataSet(set2);

    mChart.setData(d);
    mChart.setDescription("Fuel Insight");
    mChart.animateXY(2000, 2000);
    mChart.invalidate();

    //        String[] projection = { FuelContract.COLUMN_AMOUNT, FuelContract.COLUMN_ID };
    //        Cursor fuelData =
    // inflater.getContext().getContentResolver().query(FuelProvider.FUEL_CONTENT_URI, projection,
    // null, null, null);
    //        while (fuelData.getCount()!=0) {
    //            fuelData.moveToNext();
    //            Log.i("FuelData", "ID: " + fuelData.getString(1) + "  Amount: " +
    // fuelData.getString(0));
    //        }
    return view;
  }