我正在尝试使用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);
}
}
提前谢谢大家。
答案 0 :(得分:3)
哦伙计这可以按照以下说明完成:
设计一个您想要显示的图标,而不是在第一个和最后一个值上显示圆圈。
将该图标放在项目的可绘制文件夹中。
将绘制值和圆圈设置为false。这将隐藏每个条目的圆圈和值。
set1.setDrawCircles(false);
set1.setDrawValues(false);
获取您要在其上显示图标的具体值:
set1.getEntryForIndex(index).setIcon(getDrawable(R.drawable.icon));
在上面的行中,用您的条目索引替换索引,例如,对于第一个条目使用0.还要在drawable中用您的图标名称替换icon。