Search in sources :

Example 1 with IDataSet

use of com.github.mikephil.charting.interfaces.datasets.IDataSet in project MPAndroidChart by PhilJay.

the class Chart method drawMarkers.

/**
     * draws all MarkerViews on the highlighted positions
     */
protected void drawMarkers(Canvas canvas) {
    // if there is no marker view or drawing marker is disabled
    if (mMarker == null || !isDrawMarkersEnabled() || !valuesToHighlight())
        return;
    for (int i = 0; i < mIndicesToHighlight.length; i++) {
        Highlight highlight = mIndicesToHighlight[i];
        IDataSet set = mData.getDataSetByIndex(highlight.getDataSetIndex());
        Entry e = mData.getEntryForHighlight(mIndicesToHighlight[i]);
        int entryIndex = set.getEntryIndex(e);
        // make sure entry not null
        if (e == null || entryIndex > set.getEntryCount() * mAnimator.getPhaseX())
            continue;
        float[] pos = getMarkerPosition(highlight);
        // check bounds
        if (!mViewPortHandler.isInBounds(pos[0], pos[1]))
            continue;
        // callbacks to update the content
        mMarker.refreshContent(e, highlight);
        // draw the marker
        mMarker.draw(canvas, pos[0], pos[1]);
    }
}
Also used : Entry(com.github.mikephil.charting.data.Entry) Highlight(com.github.mikephil.charting.highlight.Highlight) IDataSet(com.github.mikephil.charting.interfaces.datasets.IDataSet) Paint(android.graphics.Paint) SuppressLint(android.annotation.SuppressLint)

Example 2 with IDataSet

use of com.github.mikephil.charting.interfaces.datasets.IDataSet in project MPAndroidChart by PhilJay.

the class LegendRenderer method computeLegend.

/**
     * Prepares the legend and calculates all needed forms, labels and colors.
     *
     * @param data
     */
public void computeLegend(ChartData<?> data) {
    if (!mLegend.isLegendCustom()) {
        computedEntries.clear();
        // loop for building up the colors and labels used in the legend
        for (int i = 0; i < data.getDataSetCount(); i++) {
            IDataSet dataSet = data.getDataSetByIndex(i);
            List<Integer> clrs = dataSet.getColors();
            int entryCount = dataSet.getEntryCount();
            // if we have a barchart with stacked bars
            if (dataSet instanceof IBarDataSet && ((IBarDataSet) dataSet).isStacked()) {
                IBarDataSet bds = (IBarDataSet) dataSet;
                String[] sLabels = bds.getStackLabels();
                for (int j = 0; j < clrs.size() && j < bds.getStackSize(); j++) {
                    computedEntries.add(new LegendEntry(sLabels[j % sLabels.length], dataSet.getForm(), dataSet.getFormSize(), dataSet.getFormLineWidth(), dataSet.getFormLineDashEffect(), clrs.get(j)));
                }
                if (bds.getLabel() != null) {
                    // add the legend description label
                    computedEntries.add(new LegendEntry(dataSet.getLabel(), Legend.LegendForm.NONE, Float.NaN, Float.NaN, null, ColorTemplate.COLOR_NONE));
                }
            } else if (dataSet instanceof IPieDataSet) {
                IPieDataSet pds = (IPieDataSet) dataSet;
                for (int j = 0; j < clrs.size() && j < entryCount; j++) {
                    computedEntries.add(new LegendEntry(pds.getEntryForIndex(j).getLabel(), dataSet.getForm(), dataSet.getFormSize(), dataSet.getFormLineWidth(), dataSet.getFormLineDashEffect(), clrs.get(j)));
                }
                if (pds.getLabel() != null) {
                    // add the legend description label
                    computedEntries.add(new LegendEntry(dataSet.getLabel(), Legend.LegendForm.NONE, Float.NaN, Float.NaN, null, ColorTemplate.COLOR_NONE));
                }
            } else if (dataSet instanceof ICandleDataSet && ((ICandleDataSet) dataSet).getDecreasingColor() != ColorTemplate.COLOR_NONE) {
                int decreasingColor = ((ICandleDataSet) dataSet).getDecreasingColor();
                int increasingColor = ((ICandleDataSet) dataSet).getIncreasingColor();
                computedEntries.add(new LegendEntry(null, dataSet.getForm(), dataSet.getFormSize(), dataSet.getFormLineWidth(), dataSet.getFormLineDashEffect(), decreasingColor));
                computedEntries.add(new LegendEntry(dataSet.getLabel(), dataSet.getForm(), dataSet.getFormSize(), dataSet.getFormLineWidth(), dataSet.getFormLineDashEffect(), increasingColor));
            } else {
                for (int j = 0; j < clrs.size() && j < entryCount; j++) {
                    String label;
                    // if multiple colors are set for a DataSet, group them
                    if (j < clrs.size() - 1 && j < entryCount - 1) {
                        label = null;
                    } else {
                        // add label to the last entry
                        label = data.getDataSetByIndex(i).getLabel();
                    }
                    computedEntries.add(new LegendEntry(label, dataSet.getForm(), dataSet.getFormSize(), dataSet.getFormLineWidth(), dataSet.getFormLineDashEffect(), clrs.get(j)));
                }
            }
        }
        if (mLegend.getExtraEntries() != null) {
            Collections.addAll(computedEntries, mLegend.getExtraEntries());
        }
        mLegend.setEntries(computedEntries);
    }
    Typeface tf = mLegend.getTypeface();
    if (tf != null)
        mLegendLabelPaint.setTypeface(tf);
    mLegendLabelPaint.setTextSize(mLegend.getTextSize());
    mLegendLabelPaint.setColor(mLegend.getTextColor());
    // calculate all dimensions of the mLegend
    mLegend.calculateDimensions(mLegendLabelPaint, mViewPortHandler);
}
Also used : ICandleDataSet(com.github.mikephil.charting.interfaces.datasets.ICandleDataSet) LegendEntry(com.github.mikephil.charting.components.LegendEntry) IPieDataSet(com.github.mikephil.charting.interfaces.datasets.IPieDataSet) Typeface(android.graphics.Typeface) IBarDataSet(com.github.mikephil.charting.interfaces.datasets.IBarDataSet) IDataSet(com.github.mikephil.charting.interfaces.datasets.IDataSet) Paint(android.graphics.Paint)

Example 3 with IDataSet

use of com.github.mikephil.charting.interfaces.datasets.IDataSet in project MPAndroidChart by PhilJay.

the class ChartData method removeEntry.

/**
     * Removes the Entry object closest to the given DataSet at the
     * specified index. Returns true if an Entry was removed, false if no Entry
     * was found that meets the specified requirements.
     *
     * @param xValue
     * @param dataSetIndex
     * @return
     */
public boolean removeEntry(float xValue, int dataSetIndex) {
    if (dataSetIndex >= mDataSets.size())
        return false;
    IDataSet dataSet = mDataSets.get(dataSetIndex);
    Entry e = dataSet.getEntryForXValue(xValue, Float.NaN);
    if (e == null)
        return false;
    return removeEntry(e, dataSetIndex);
}
Also used : IDataSet(com.github.mikephil.charting.interfaces.datasets.IDataSet)

Example 4 with IDataSet

use of com.github.mikephil.charting.interfaces.datasets.IDataSet in project Weather by Sparker0i.

the class GraphsFragment method toggleValues.

public void toggleValues() {
    if (i == 1) {
        menu.getItem(0).setIcon(ContextCompat.getDrawable(getContext(), R.drawable.ic_radio_button_unchecked_white_24dp));
        i = 0;
    } else {
        menu.getItem(0).setIcon(ContextCompat.getDrawable(getContext(), R.drawable.ic_radio_button_checked_white_24dp));
        i = 1;
    }
    for (IDataSet set : temperatureChart.getData().getDataSets()) {
        set.setDrawValues(!set.isDrawValuesEnabled());
        set.setValueTextColor(Color.WHITE);
    }
    temperatureChart.invalidate();
    for (IDataSet set : rainChart.getData().getDataSets()) {
        set.setDrawValues(!set.isDrawValuesEnabled());
        set.setValueTextColor(Color.WHITE);
    }
    for (IDataSet set : pressureChart.getData().getDataSets()) {
        set.setDrawValues(!set.isDrawValuesEnabled());
        set.setValueTextColor(Color.WHITE);
    }
    for (IDataSet set : snowChart.getData().getDataSets()) {
        set.setDrawValues(!set.isDrawValuesEnabled());
        set.setValueTextColor(Color.WHITE);
    }
    for (IDataSet set : windChart.getData().getDataSets()) {
        set.setDrawValues(!set.isDrawValuesEnabled());
        set.setValueTextColor(Color.WHITE);
    }
    temperatureChart.invalidate();
    rainChart.invalidate();
    pressureChart.invalidate();
    snowChart.invalidate();
    windChart.invalidate();
}
Also used : IDataSet(com.github.mikephil.charting.interfaces.datasets.IDataSet)

Example 5 with IDataSet

use of com.github.mikephil.charting.interfaces.datasets.IDataSet in project MPAndroidChart by PhilJay.

the class Chart method setData.

// public void initWithDummyData() {
// ColorTemplate template = new ColorTemplate();
// template.addColorsForDataSets(ColorTemplate.COLORFUL_COLORS,
// getContext());
//
// setColorTemplate(template);
// setDrawYValues(false);
//
// ArrayList<String> xVals = new ArrayList<String>();
// Calendar calendar = Calendar.getInstance();
// for (int i = 0; i < 12; i++) {
// xVals.add(calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT,
// Locale.getDefault()));
// }
//
// ArrayList<DataSet> dataSets = new ArrayList<DataSet>();
// for (int i = 0; i < 3; i++) {
//
// ArrayList<Entry> yVals = new ArrayList<Entry>();
//
// for (int j = 0; j < 12; j++) {
// float val = (float) (Math.random() * 100);
// yVals.add(new Entry(val, j));
// }
//
// DataSet set = new DataSet(yVals, "DataSet " + i);
// dataSets.add(set); // add the datasets
// }
// // create a data object with the datasets
// ChartData data = new ChartData(xVals, dataSets);
// setData(data);
// invalidate();
// }
/**
     * Sets a new data object for the chart. The data object contains all values
     * and information needed for displaying.
     *
     * @param data
     */
public void setData(T data) {
    mData = data;
    mOffsetsCalculated = false;
    if (data == null) {
        return;
    }
    // calculate how many digits are needed
    setupDefaultFormatter(data.getYMin(), data.getYMax());
    for (IDataSet set : mData.getDataSets()) {
        if (set.needsFormatter() || set.getValueFormatter() == mDefaultValueFormatter)
            set.setValueFormatter(mDefaultValueFormatter);
    }
    // let the chart know there is new data
    notifyDataSetChanged();
    if (mLogEnabled)
        Log.i(LOG_TAG, "Data is set.");
}
Also used : IDataSet(com.github.mikephil.charting.interfaces.datasets.IDataSet)

Aggregations

IDataSet (com.github.mikephil.charting.interfaces.datasets.IDataSet)8 Paint (android.graphics.Paint)2 BarLineScatterCandleBubbleData (com.github.mikephil.charting.data.BarLineScatterCandleBubbleData)2 SuppressLint (android.annotation.SuppressLint)1 Typeface (android.graphics.Typeface)1 LegendEntry (com.github.mikephil.charting.components.LegendEntry)1 BarData (com.github.mikephil.charting.data.BarData)1 ChartData (com.github.mikephil.charting.data.ChartData)1 Entry (com.github.mikephil.charting.data.Entry)1 Highlight (com.github.mikephil.charting.highlight.Highlight)1 IBarDataSet (com.github.mikephil.charting.interfaces.datasets.IBarDataSet)1 ICandleDataSet (com.github.mikephil.charting.interfaces.datasets.ICandleDataSet)1 IPieDataSet (com.github.mikephil.charting.interfaces.datasets.IPieDataSet)1