使用 MP Android 图表库在折线图中用不同颜色填充特定的 Y 范围?
Fill specific Y Range with different color in Line Chart using MP Android Chart Library?
我是 MP Android 图表的新手,我不知道如何用不同的颜色填充特定的 Y 范围。在屏幕截图中突出显示为第 2 点。
此外,在阅读功能文档后,我试图更改第 1 点中突出显示的线条颜色,并用一些颜色点 3 填充图表下方的区域。但是第 1 点和第 3 点不起作用,我不知道该怎么做2 可以是 done.Screenshot 并附上代码。
public class LineChartActivity extends AppCompatActivity {
private static final String TAG = "Test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_line_chart);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Log.i(TAG, "Line Chart Activity Created");
LineChart chart = (LineChart) findViewById(R.id.chart);
LineData data = new LineData(getXAxisValues(), getDataSet());
chart.setData(data);
setXAxis(chart);
chart.getAxisRight().setDrawLabels(false);
//chart.setAutoScaleMinMaxEnabled(true);
chart.setGridBackgroundColor(128);
chart.setBorderColor(255);
chart.setDrawGridBackground(false);
//chart.setBackgroundColor(0);
chart.getLegend().setEnabled(false);
chart.setPinchZoom(true);
chart.setDescription("");
chart.setTouchEnabled(true);
chart.setDoubleTapToZoomEnabled(true);
chart.animateXY(2000, 2000);
chart.invalidate();
}
private ArrayList<ILineDataSet> getDataSet() {
ArrayList<ILineDataSet> dataSets = null;
ArrayList<Entry> valueSet1 = new ArrayList<>();
Entry v1e1 = new Entry(110.000f, 0);
valueSet1.add(v1e1);
Entry v1e2 = new Entry(40.000f, 4);
valueSet1.add(v1e2);
Entry v1e3 = new Entry(60.000f, 5);
valueSet1.add(v1e3);
Entry v1e4 = new Entry(30.000f, 6);
valueSet1.add(v1e4);
Entry v1e5 = new Entry(90.000f, 7);
valueSet1.add(v1e5);
Entry v1e6 = new Entry(100.000f, 8);
valueSet1.add(v1e6);
LineDataSet lineDataSet1 = new LineDataSet(valueSet1, "Brand 1");
int[] colors = new int[] {R.color.red ,R.color.red, R.color.orange ,R.color.green, R.color.orange, R.color.red };
lineDataSet1.setCircleColors(colors, this);
lineDataSet1.setCircleRadius(8f);
lineDataSet1.setLineWidth(3f);
lineDataSet1.setValueTextSize(20f);
lineDataSet1.enableDashedLine(6f, 18f, 0);
dataSets = new ArrayList<>();
dataSets.add(lineDataSet1);
return dataSets;
}
private ArrayList<String> getXAxisValues() {
ArrayList<String> xAxis = new ArrayList<>();
xAxis.add("JAN");
xAxis.add("FEB");
xAxis.add("MAR");
xAxis.add("APR");
xAxis.add("MAY");
xAxis.add("JUN");
xAxis.add("JUL");
xAxis.add("AUG");
xAxis.add("SEPT");
xAxis.add("OCT");
xAxis.add("NOV");
xAxis.add("DEC");
return xAxis;
}
private void setXAxis(LineChart chart){
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setTextSize(10f);
xAxis.setTextColor(Color.BLUE);
//xAxis.setDrawGridLines(true);
xAxis.setDrawAxisLine(true);
}
}
非常感谢!
安吉特
如果你想改变连接情节点的线的颜色,你可以试试这个:
lineDataSet1.setColor(Color.BLACK) //or any other color you want
要填充图表下方的区域,请尝试使用:
lineDataSet1.setFillColor(Color.GREEN);
lineDataSet1.setFillAlpha(10); //setting alpha is optional, use if needed.
就您的第 2 点而言,我认为使用 LimitLines 可能是开始,因为它们可以平行于任何轴绘制。填写它们需要一些调查。如果我发现了什么,我一定会更新答案。
希望对您有所帮助!
我是 MP Android 图表的新手,我不知道如何用不同的颜色填充特定的 Y 范围。在屏幕截图中突出显示为第 2 点。
此外,在阅读功能文档后,我试图更改第 1 点中突出显示的线条颜色,并用一些颜色点 3 填充图表下方的区域。但是第 1 点和第 3 点不起作用,我不知道该怎么做2 可以是 done.Screenshot 并附上代码。
public class LineChartActivity extends AppCompatActivity {
private static final String TAG = "Test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_line_chart);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Log.i(TAG, "Line Chart Activity Created");
LineChart chart = (LineChart) findViewById(R.id.chart);
LineData data = new LineData(getXAxisValues(), getDataSet());
chart.setData(data);
setXAxis(chart);
chart.getAxisRight().setDrawLabels(false);
//chart.setAutoScaleMinMaxEnabled(true);
chart.setGridBackgroundColor(128);
chart.setBorderColor(255);
chart.setDrawGridBackground(false);
//chart.setBackgroundColor(0);
chart.getLegend().setEnabled(false);
chart.setPinchZoom(true);
chart.setDescription("");
chart.setTouchEnabled(true);
chart.setDoubleTapToZoomEnabled(true);
chart.animateXY(2000, 2000);
chart.invalidate();
}
private ArrayList<ILineDataSet> getDataSet() {
ArrayList<ILineDataSet> dataSets = null;
ArrayList<Entry> valueSet1 = new ArrayList<>();
Entry v1e1 = new Entry(110.000f, 0);
valueSet1.add(v1e1);
Entry v1e2 = new Entry(40.000f, 4);
valueSet1.add(v1e2);
Entry v1e3 = new Entry(60.000f, 5);
valueSet1.add(v1e3);
Entry v1e4 = new Entry(30.000f, 6);
valueSet1.add(v1e4);
Entry v1e5 = new Entry(90.000f, 7);
valueSet1.add(v1e5);
Entry v1e6 = new Entry(100.000f, 8);
valueSet1.add(v1e6);
LineDataSet lineDataSet1 = new LineDataSet(valueSet1, "Brand 1");
int[] colors = new int[] {R.color.red ,R.color.red, R.color.orange ,R.color.green, R.color.orange, R.color.red };
lineDataSet1.setCircleColors(colors, this);
lineDataSet1.setCircleRadius(8f);
lineDataSet1.setLineWidth(3f);
lineDataSet1.setValueTextSize(20f);
lineDataSet1.enableDashedLine(6f, 18f, 0);
dataSets = new ArrayList<>();
dataSets.add(lineDataSet1);
return dataSets;
}
private ArrayList<String> getXAxisValues() {
ArrayList<String> xAxis = new ArrayList<>();
xAxis.add("JAN");
xAxis.add("FEB");
xAxis.add("MAR");
xAxis.add("APR");
xAxis.add("MAY");
xAxis.add("JUN");
xAxis.add("JUL");
xAxis.add("AUG");
xAxis.add("SEPT");
xAxis.add("OCT");
xAxis.add("NOV");
xAxis.add("DEC");
return xAxis;
}
private void setXAxis(LineChart chart){
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setTextSize(10f);
xAxis.setTextColor(Color.BLUE);
//xAxis.setDrawGridLines(true);
xAxis.setDrawAxisLine(true);
}
}
非常感谢! 安吉特
如果你想改变连接情节点的线的颜色,你可以试试这个:
lineDataSet1.setColor(Color.BLACK) //or any other color you want
要填充图表下方的区域,请尝试使用:
lineDataSet1.setFillColor(Color.GREEN);
lineDataSet1.setFillAlpha(10); //setting alpha is optional, use if needed.
就您的第 2 点而言,我认为使用 LimitLines 可能是开始,因为它们可以平行于任何轴绘制。填写它们需要一些调查。如果我发现了什么,我一定会更新答案。
希望对您有所帮助!