gpt4 book ai didi

java - MPAndroidChart 在图表的水平线上显示标签

转载 作者:行者123 更新时间:2023-11-30 10:35:51 25 4
gpt4 key购买 nike

是否可以在图形上以两点为中心显示自定义文本?

我已将 MPAndroidChart 设置为仅使用水平线和垂直线显示阶梯函数类型的图表(表示花费在执行特定任务上的小时数)。我希望能够做的是在水平部分上显示一个标签,指示该部分的大小(也就是通过取 x 值之间的差异计算所花费的时间)。有没有办法做到这一点?我一直在研究修改库,但我似乎无法弄清楚哪里是正确的地方。

我最好的猜测是对 BarLineChartBase onDraw() 方法或 LineChartRenderer drawLinear() 方法进行一些更改。

这是我能够生产的:

current graph

下面是我正在尝试制作的示例:

example graph

最佳答案

想通了!只需在 drawDescription() 之后的 onDraw() 末尾向 LineChart 类添加一个新方法 drawTime()。由于每条水平线都由 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);
}
}

结果图 looks like this

关于java - MPAndroidChart 在图表的水平线上显示标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40897185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com