2014-11-25 106 views
0

有什么方法可以改变achartengine折线图的线条点颜色从白色到黑色?安卓achartengine,改变点价值颜色

在下面的图像中,我想将颜色2700,2500等从白色变为黑色。

这里是我的代码:

private void openChart() { 

    int count = 5; 
    Date[] dt = new Date[5]; 
    for (int i = 0; i < count; i++) { 
     GregorianCalendar gc = new GregorianCalendar(2014, 10, i + 1); 
     dt[i] = gc.getTime(); 
    } 

    int[] visits = {2000, 2500, 2700, 2100, 2800}; 

    // Creating TimeSeries for Visits 
    TimeSeries visitsSeries = new TimeSeries("BMR Rate"); 

    // Adding data to Visits Series 
    for (int i = 0; i < dt.length; i++) 
     visitsSeries.add(dt[i], visits[i]); 

    // Creating a dataset to hold each series 
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 

    // Adding Visits Series to the dataset 
    dataset.addSeries(visitsSeries); 

    // Creating XYSeriesRenderer to customize visitsSeries 
    XYSeriesRenderer visitsRenderer = new XYSeriesRenderer(); 
    visitsRenderer.setColor(Color.WHITE); 
    visitsRenderer.setPointStyle(PointStyle.SQUARE); 

    visitsRenderer.setFillPoints(true); 
    visitsRenderer.setLineWidth(3); 
    visitsRenderer.setDisplayChartValues(true); 


    XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer(); 

    multiRenderer.setChartTitle("Body Mass Index"); 
    // multiRenderer.setMargins(new int[]{0, 0, 0, 10}); 
    multiRenderer.setApplyBackgroundColor(true); 
    // multiRenderer.setPointSize(15); 
    multiRenderer.setLabelsColor(Color.WHITE); 
    multiRenderer.setGridColor(Color.RED); 
    multiRenderer.setMarginsColor(Color.parseColor("#54D66A")); 
    multiRenderer.setYLabelsColor(0,Color.WHITE); 
    multiRenderer.setXLabelsColor(Color.WHITE); 

    multiRenderer.setXTitle("Days"); 
    multiRenderer.setYTitle("Count"); 
    multiRenderer.setZoomButtonsVisible(true); 

    // Adding visitsRenderer and viewsRenderer to multipleRenderer 
    // Note: The order of adding dataseries to dataset and renderers to multipleRenderer 
    // should be same 
    multiRenderer.addSeriesRenderer(visitsRenderer); 
    // multiRenderer.addSeriesRenderer(viewsRenderer); 

    // Getting a reference to LinearLayout of the MainActivity Layout 
    LinearLayout chartContainer = (LinearLayout) findViewById(R.id.chart_container); 

    // Creating a Time Chart 
    mChart = (GraphicalView) ChartFactory.getTimeChartView(getBaseContext(), dataset, multiRenderer, "dd-MMM-yyyy"); 

    multiRenderer.setClickEnabled(true); 
    multiRenderer.setSelectableBuffer(10); 

    // Setting a click event listener for the graph 
    mChart.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Format formatter = new SimpleDateFormat("dd-MM"); 

      SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint(); 

      if (seriesSelection != null) { 
       int seriesIndex = seriesSelection.getSeriesIndex(); 
       String selectedSeries = "Visits"; 
       if (seriesIndex == 0) 
        selectedSeries = "Visits"; 
       else 
        selectedSeries = "Views"; 

       // Getting the clicked Date (x value) 
       long clickedDateSeconds = (long) seriesSelection.getXValue(); 
       Date clickedDate = new Date(clickedDateSeconds); 
       String strDate = formatter.format(clickedDate); 

       // Getting the y value 
       int amount = (int) seriesSelection.getValue(); 

       // Displaying Toast Message 
       Toast.makeText(
         getBaseContext(), 
         selectedSeries + " on " + strDate + " : " + amount , 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 

    }); 

    // Adding the Line Chart to the LinearLayout 
    chartContainer.addView(mChart); 
} 

回答

0

如果你想改变只有一个点的颜色,你可能要继承渲染器并设置颜色渲染自己当点。

+0

没有一分先生。我想改变所有的值如明智2000,2500,2700,2100,2800。这可能先生吗? – 2014-11-25 12:56:02

+0

先生哪一个。请详细说明 – 2014-11-25 12:59:31

+1

对不起,切断了......实际上,如果你想让这些点成为与该线不同的颜色,那么它的答案就相同了 - 渲染器的子类。如果您希望点和线条具有相同的颜色,但不是白色,请使用渲染器的setColor方法设置不同的颜色。 – GreyBeardedGeek 2014-11-25 13:05:00

0

添加颜色来呈现的标签:

multiRenderer.setYLabelsColor(0, Color.BLACK); 
multiRenderer.setXLabelsColor(Color.BLACK); 
+0

没有。我不需要设置setYLabelsColor,setXLabelsColor的颜色。我想改变2000,2500,2700,2100,白色到黑色的价值 – 2014-11-27 05:43:07