Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将mpandroidchart库中的两个barchat分组_Android_Bar Chart - Fatal编程技术网

如何将mpandroidchart库中的两个barchat分组

如何将mpandroidchart库中的两个barchat分组,android,bar-chart,Android,Bar Chart,我希望以两个条形图为一组显示以下条形图: 任何反馈都将不胜感激 以下是代码: public class BarChartActivityMultiDataset extends DemoBase implements OnSeekBarChangeListener { private BarChart mChart; private SeekBar mSeekBarX, mSeekBarY; private TextView tvX, tvY; @Override protected vo

我希望以两个条形图为一组显示以下条形图:

任何反馈都将不胜感激

以下是代码:

public class BarChartActivityMultiDataset extends DemoBase implements
OnSeekBarChangeListener {

private BarChart mChart;
private SeekBar mSeekBarX, mSeekBarY;
private TextView tvX, tvY;

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

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

    mSeekBarX = (SeekBar) findViewById(R.id.seekBar1);
    mSeekBarX.setOnSeekBarChangeListener(this);

    mSeekBarY = (SeekBar) findViewById(R.id.seekBar2);
    mSeekBarY.setOnSeekBarChangeListener(this);

    mChart = (BarChart) findViewById(R.id.chart1);
    mChart.setDescription("");

    ColorTemplate ct = new ColorTemplate();

    // add colors for the first dataset
    ct.addDataSetColors(new int[]{ R.color.colorful_5}, this);

    // the second dataset only has one color
    ct.addDataSetColors(new int[] {
        R.color.greens_2
    }, this);

    // add colors for the third dataset
    //ct.addDataSetColors(ColorTemplate.COLORFUL_COLORS, this);

    mChart.setColorTemplate(ct);
    mChart.setBarSpace(30f);
    // disable the drawing of values
    mChart.setDrawYValues(false);

    // disable 3D
    mChart.set3DEnabled(false);
    mChart.setYLabelCount(10);

    // scaling can now only be done on x- and y-axis separately
    mChart.setPinchZoom(false);

    //        mChart.setDrawLegend(false);

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

    Legend l = mChart.getLegend();
    l.setPosition(LegendPosition.RIGHT_OF_CHART);


    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.bar, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.actionToggleValues: {
            if (mChart.isDrawYValuesEnabled())
                mChart.setDrawYValues(false);
            else
                mChart.setDrawYValues(true);
            mChart.invalidate();
            break;
        }
        case R.id.actionTogglePinch: {
            if (mChart.isPinchZoomEnabled())
                mChart.setPinchZoom(false);
            else
                mChart.setPinchZoom(true);

            mChart.invalidate();
            break;
        }
        case R.id.actionToggle3D: {
            if (mChart.is3DEnabled())
                mChart.set3DEnabled(false);
            else
                mChart.set3DEnabled(true);
            mChart.invalidate();
            break;
        }
        case R.id.actionToggleHighlight: {
            if (mChart.isHighlightEnabled())
                mChart.setHighlightEnabled(false);
            else
                mChart.setHighlightEnabled(true);
            mChart.invalidate();
            break;
        }
        case R.id.actionToggleHighlightArrow: {
            if (mChart.isDrawHighlightArrowEnabled())
                mChart.setDrawHighlightArrow(false);
            else
                mChart.setDrawHighlightArrow(true);
            mChart.invalidate();
            break;
        }
        case R.id.actionToggleStartzero: {
            if (mChart.isStartAtZeroEnabled())
                mChart.setStartAtZero(false);
            else
                mChart.setStartAtZero(true);

            mChart.invalidate();
            break;
        }
        case R.id.actionToggleAdjustXLegend: {
            XLabels xLabels = mChart.getXLabels();

            if (xLabels.isAdjustXLabelsEnabled())
                xLabels.setAdjustXLabels(false);
            else
                xLabels.setAdjustXLabels(true);

            mChart.invalidate();
            break;
        }
        case R.id.actionSave: {
            // mChart.saveToGallery("title"+System.currentTimeMillis());
            mChart.saveToPath("title" + System.currentTimeMillis(), "");
            break;
        }
    }
    return true;
}

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean  
fromUser) {

    tvX.setText("" + (mSeekBarX.getProgress() + 1));
    tvY.setText("" + (mSeekBarY.getProgress()));

    ArrayList<String> xVals = new ArrayList<String>();
    for (int i = 0; i < mSeekBarX.getProgress(); i++) {
        xVals.add((i) + "");
    }

    ArrayList<Entry> yVals1 = new ArrayList<Entry>();
    ArrayList<Entry> yVals2 = new ArrayList<Entry>();
   // ArrayList<Entry> yVals3 = new ArrayList<Entry>();

    for (int i = 0; i < mSeekBarX.getProgress() / 3; i++) {
        float val = (float) (Math.random() * mSeekBarY.getProgress()) + 3;
        yVals1.add(new Entry(val, i));

    }

    for (int i = mSeekBarX.getProgress() / 3; i < mSeekBarX.getProgress() /   
     3 ; i++) {
        float val = (float) (Math.random() * mSeekBarY.getProgress()) + 3;
        yVals2.add(new Entry(val, i));
    }

    // create 3 datasets with different types
    DataSet set1 = new DataSet(yVals1, "Finished Packages");
    DataSet set2 = new DataSet(yVals2, "In work Packages");
    //DataSet set3 = new DataSet(yVals3, "Company C");

    ArrayList<DataSet> dataSets = new ArrayList<DataSet>();
    dataSets.add(set1);
    dataSets.add(set2);
   // dataSets.add(set3);

    ChartData data = new ChartData(xVals, dataSets);

    mChart.setData(data);
    mChart.invalidate();
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
}
}
我刚刚用上面的代码更新了下面的类

致以最良好的祝愿, 奥勒良

//ArrayList yVals3=新的ArrayList

for (int i = 0; i < 7; i++) {
    if (i%2 == 0) {
        yVals1.add(new Entry(30, i));   
    } else {
        yVals2.add(new Entry(70, i));
    }
}



// create 3 datasets with different types
DataSet set1 = new DataSet(yVals1, "Finished Packages");
DataSet set2 = new DataSet(yVals2, "In work Packages");
 //DataSet set3 = new DataSet(yVals3, "Company C");

ArrayList<DataSet> dataSets = new ArrayList<DataSet>();
dataSets.add(set1);
dataSets.add(set2);
// dataSets.add(set3);

ChartData data = new ChartData(xVals, dataSets);

mChart.setData(data);
mChart.invalidate();
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}

这个太宽了。向我们展示您的尝试。我更新了问题的描述。看起来您使用的是非常过时的MPAndroidChart版本。要访问GitHub页面,请更新至最新版本。自1.4.0版以来,ColorTemplate不再用于设置颜色,最新版本为2.0.9。感谢您的回复。我会更新代码。你能给我一个关于分组图表条的提示或例子吗?
for (int i = 0; i < 7; i++) {
    if (i%2 == 0) {
        yVals1.add(new Entry(30, i));   
    } else {
        yVals2.add(new Entry(70, i));
    }
}



// create 3 datasets with different types
DataSet set1 = new DataSet(yVals1, "Finished Packages");
DataSet set2 = new DataSet(yVals2, "In work Packages");
 //DataSet set3 = new DataSet(yVals3, "Company C");

ArrayList<DataSet> dataSets = new ArrayList<DataSet>();
dataSets.add(set1);
dataSets.add(set2);
// dataSets.add(set3);

ChartData data = new ChartData(xVals, dataSets);

mChart.setData(data);
mChart.invalidate();
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}