是否可以在图表上的2个点之间显示自定义文本?
我已经安装了MPAndroidChart来显示仅具有水平和垂直线的步进功能类型图(表示执行特定任务所花费的时间)。我希望能够做的是在水平部分上显示标签,指示部分的大小(也就是通过取x值之间的差异计算所花费的时间)。有没有办法做到这一点?我一直在考虑修改图书馆,但我似乎无法弄清楚哪里是正确的地方。
我最好的猜测是BarLineChartBase onDraw()
方法或者LineChartRenderer drawLinear()
方法中的一些更改。
以下是我能够制作的内容:
这是我想要制作的一个例子:
答案 0 :(得分:1)
想出来!只需在drawDescription()之后的onDraw()末尾添加一个新方法drawTime()到LineChart类。由于每个水平线由2个入口点描述,我只需为我的单个数据集循环遍历2个条目并计算差异:
protected void drawTime(Canvas c)
{
Paint timePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
timePaint.setTextSize(Utils.convertDpToPixel(16));
timePaint.setColor(Color.BLUE);
timePaint.setTextAlign(Paint.Align.CENTER);
MPPointD position;
LineData data = this.getLineData();
ILineDataSet dataSet = data.getDataSetByIndex(0);
for (int i = 1; i < dataSet.getEntryCount(); i+=2)
{
Entry e1 = dataSet.getEntryForIndex(i-1);
Entry e2 = dataSet.getEntryForIndex(i);
float time = e2.getX() - e1.getX();
position = getPixelForValues(e1.getX() + time/2, e1.getY() - 0.05f, YAxis.AxisDependency.LEFT);
c.drawText(String.valueOf(time), (float)position.x, (float)position.y, timePaint);
}
}