gpt4 book ai didi

mpandroidchart - 使用值和日期制作折线图

转载 作者:行者123 更新时间:2023-12-04 19:03:18 26 4
gpt4 key购买 nike

在我的应用程序中,我使用 ios-charts 库(MPAndroidChart 的快速替代品)。我需要的只是显示带有日期和值的折线图。

现在我使用这个函数来显示图表

func setChart(dataPoints: [String], values: [Double]) {       

var dataEntries: [ChartDataEntry] = []

for i in 0..<dataPoints.count {
let dataEntry = ChartDataEntry(value: values[i], xIndex: i)
dataEntries.append(dataEntry)
}

let lineChartDataSet = LineChartDataSet(yVals: dataEntries, label: "Items count")
let lineChartData = LineChartData(xVals: dataPoints, dataSet: lineChartDataSet)
dateChartView.data = lineChartData
}

这是我的数据:

xItems = ["27.05", "03.06", "17.07", "19.09", "20.09"] //String    
let unitsSold = [25.0, 30.0, 45.0, 60.0, 20.0] //Double

但正如您所看到的 - xItems 是“dd.mm”格式的日期。由于它们是字符串,因此它们之间具有相同的填充。我希望他们的真实日期更加准确。例如 19.09 和 20.09 应该非常接近。我知道我应该每天与一些数字相匹配才能完成它。但我不知道下一步该怎么做 - 如何调整 x 标签边距?

更新经过小型研究,我发现许多开发人员询问过此功能,但什么也没发生 - 对于我的情况,我在 Swift 中找到了这个库的非常有趣的替代方案 - PNChart 。它很容易使用,它解决了我的问题。

最佳答案

最简单的解决方案是循环访问数据并添加值为 0 的 ChartDataEntry 以及每个缺失日期的相应标签。

为了回答评论中的问题,这是我的一个应用程序的屏幕截图,其中我用 0 值填充了日期间隙:

Chart Gaps

在我的例子中,我想要 0 值,而不是从数据点到数据点的平均线,因为它清楚地表明跳过的日子(例如 8/11)没有数据。

从 @Philipp Jahoda 的评论来看,听起来您可以跳过 0 个值条目,而只需将您拥有的数据索引到正确的标签。

我修改了 MPAndroidChart 示例程序以跳过一些数据点,这就是结果:

Chart Gaps Non Zero

正如@Philipp Jahoda 在评论中提到的,图表通过连接到下一个数据点来处理丢失的条目。从下面的代码中您可以看到我正在为整个数据集生成 x 值(标签),但跳过索引 11 - 29 的 y 值(数据点),这正是您想要的。剩下的唯一一件事就是处理 x 标签,因为听起来您不希望在我的示例中显示 15、20 和 25。

ArrayList<String> xVals = new ArrayList<String>();
for (int i = 0; i < count; i++) {
xVals.add((i) + "");
}

ArrayList<Entry> yVals = new ArrayList<Entry>();

for (int i = 0; i < count; i++) {

if (i > 10 && i < 30) {
continue;
}

float mult = (range + 1);
float val = (float) (Math.random() * mult) + 3;// + (float)
// ((mult *
// 0.1) / 10);
yVals.add(new Entry(val, i));
}

关于mpandroidchart - 使用值和日期制作折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33619679/

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