MPAndroidChart仅对数据集的第一个和最后一个点进行圆圈和数字

时间:2017-12-28 20:52:01

标签: mpandroidchart

我正在尝试使用MPAndroidChart生成一个情节。具体而言,主要取决于对数的函数。出于这个原因,我为数据点条目的循环创建了以下内容(我很确定这不是最好的方法,但我决定采用它)

yValues.add(new Entry(value3,value1));
float PointData = 100.0f;
for (int i=1 ; i<PointData ; i++){
    yValues.add( new Entry( value3+(i/PointData)*(value4-value3),value1+(value2-value1) * Float.parseFloat(String.valueOf(Math.log(value3+(i/PointData)*(value4-value3)/value3)/Math.log(value4/value3))) ) );
}
yValues.add(new Entry(value4,value2));

我的问题是我必须设置

set1.setDrawCircles(false);
set1.setDrawValues(false);

否则我的情节将用圆圈和数字填充。我想虽然能够为第一个绘制这两个(圆圈和数字)(由“yValues.add(new Entry(value3,value1));”)和last定义(由“yValues.add”定义条目(value4,value2));“)数据集点。我花了相当多的时间,但遗憾的是没有运气。因此,如果有人能帮助我解决这个问题,我真的很感激。我还附上了整个java文件,以防有人想查看代码。

public class cyl_1plane_tempplot extends AppCompatActivity {

LineChart mChart;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cyl_1plane_tempplot);

    Intent localintent = getIntent();

    float value1 = localintent.getFloatExtra("key1", -1);
    float value2 = localintent.getFloatExtra("key2", -1);
    float value3 = localintent.getFloatExtra("key4", -1);
    float value4 = localintent.getFloatExtra("key5", -1);

    mChart = findViewById(R.id.cond_cyl_1layer_plot);

    mChart.setDragEnabled(true);
    mChart.setScaleEnabled(false);
    mChart.getDescription().setEnabled(false);

    mChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTH_SIDED);
    float graph_excess_X = 10f;
    XAxis bottomAxis = mChart.getXAxis();
    bottomAxis.setAxisMinimum(value3 - (value4 - value3)/graph_excess_X);
    bottomAxis.setAxisMaximum(value4 + (value4 - value3)/graph_excess_X);

    ArrayList<Entry> yValues = new ArrayList<>();
    yValues.add(new Entry(value3,value1));
    float PointData = 100.0f;
    for (int i=1 ; i<PointData ; i++){
        yValues.add( new Entry( value3+(i/PointData)*(value4-value3),value1+(value2-value1) * Float.parseFloat(String.valueOf(Math.log(value3+(i/PointData)*(value4-value3)/value3)/Math.log(value4/value3))) ) );
    }
    yValues.add(new Entry(value4,value2));

    ArrayList<ILineDataSet> lineDataSets = new ArrayList<>();

    LineDataSet set1 = new LineDataSet(yValues, "Title");
    set1.setFillAlpha(110);
    int color = getResources().getColor(R.color.blue_chart_color);
    set1.setColor(color);
    set1.setDrawCircles(false);
    set1.setDrawValues(false);
    set1.setLineWidth(3f);

    lineDataSets.add(set1);
    LineData data = new LineData(lineDataSets);
    mChart.setData(data);
    }
}

提前谢谢大家。

1 个答案:

答案 0 :(得分:3)

哦伙计这可以按照以下说明完成:

  1. 设计一个您想要显示的图标,而不是在第一个和最后一个值上显示圆圈。

  2. 将该图标放在项目的可绘制文件夹中。

  3. 将绘制值和圆圈设置为false。这将隐藏每个条目的圆圈和值。

    set1.setDrawCircles(false);
    set1.setDrawValues(false);
    
  4. 获取您要在其上显示图标的具体值:

    set1.getEntryForIndex(index).setIcon(getDrawable(R.drawable.icon));
    
  5. 在上面的行中,用您的条目索引替换索引,例如,对于第一个条目使用0.还要在drawable中用您的图标名称替换icon。