ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用MP Android Chart Library在折线图中填充不同颜色的特定Y范围?

2019-06-11 19:11:42  阅读:959  来源: 互联网

标签:android charts linechart mpandroidchart


我是MP Android Chart的新手,我无法弄清楚如何用不同的颜色填充特定的Y系列.屏幕截图中突出显示为第2点.

在阅读功能文档后,我试图改变第1点突出显示的线条颜色,并用一些颜色点3填充图形下的区域.但是第1点和第3点不起作用,我无法弄清楚第2点是如何完成的.截图和代码Screenshot

公共类LineChartActivity扩展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);
}

}

非常感谢 !
ANKIT

解决方法:

如果您尝试更改连接绘图点的线的颜色,可以尝试这样做:

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可能是起点,因为它们可以平行于任何轴绘制.填写他们将需要一些调查.如果我找到了什么,我肯定会更新答案.

希望这可以帮助!

标签:android,charts,linechart,mpandroidchart
来源: https://codeday.me/bug/20190611/1220561.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有