ios - Swift - 以编程方式创建图表(条形图、折线图、饼图、柱形图)
问题描述
我正在使用https://github.com/danielgindi/Charts框架。根据教程,我们必须为视图创建一个出口,然后将其归类为相应的图表视图。所以我创建了 4 个网点并成功加载了图表。我只想为所有图表使用一个插座。我在表格视图中显示图表。那么我可以对所有图表重用一个视图吗?我尝试调用 init() 方法。但是,init() 方法不适用于所有图表。另外,我也尝试过给框架,但失败了。请帮忙。
解决方案
在您查看更多图表文档之后,您可能会例如制作折线图LineChartView()
,您可以使用不同的更新函数来更改它的外观,例如这是我的一个:
func lineChartUpdate(dataPoints: [String], values: [Double]) {
//Graph data management
var lineChartEntry = [ChartDataEntry]()
for i in 0..<prices.count {
//Graph marker from extension
if prices != [] {
let value = ChartDataEntry(x: Double(i), y: values[i])
lineChartEntry.append(value)
let line1 = LineChartDataSet(values: lineChartEntry, label: "Price")
line1.setColor(.white)
line1.drawVerticalHighlightIndicatorEnabled = false
line1.drawHorizontalHighlightIndicatorEnabled = false
line1.mode = .cubicBezier
line1.lineWidth = 2.0
line1.drawValuesEnabled = true
line1.valueTextColor = UIColor.white
line1.drawCirclesEnabled = false
chartView.xAxis.valueFormatter = IndexAxisValueFormatter(values:self.days)
chartView.xAxis.granularity = 1
chartView.leftAxis.drawGridLinesEnabled = false
chartView.xAxis.drawGridLinesEnabled = false
//Expanded
chartView.rightAxis.enabled = false
chartView.leftAxis.enabled = false
chartView.xAxis.enabled = false
chartView.rightAxis.drawGridLinesEnabled = false
chartView.legend.enabled = false
chartView.dragEnabled = false
chartView.pinchZoomEnabled = false
chartView.drawMarkers = false
chartView.doubleTapToZoomEnabled = false
self.chartView.isUserInteractionEnabled = true
//Graph Data.
let data = LineChartData()
data.addDataSet(line1)
self.chartView.data = data
self.chartLoaded = true
}
}
}
如果您希望一个视图能够充当条形图和折线图,则在同一位置为每种类型设置一个视图可能会更容易,并且您可以将条形图视图更改为任何类型的您想要的条形图并对其进行更新以尽可能多地重复使用视图,但是当您需要折线图时,只需隐藏该视图并改用折线图。
推荐阅读
- matlab - 如何在 Matlab 中将字符串单元格数组转换为 int 和 NaN?
- typescript - 为什么打字稿试图加载错误的类型定义?
- bash - 移动多个文件名相似但相差 1 个字符的文件
- google-app-engine - 对于 GCS 图像 blob,images.get_serving_url 失败
- javascript - ComponentDidUpdate 中的无限循环
- html - css flexbox 3子div,中间div不应该改变
- laravel - Laravel nova,“在 null 上调用函数 tap()”
- regex - 正则表达式,用于将字符串与除特定大写之外的任何大写匹配
- flutter - API 调用完成后显示 CircularProgressIndicator() 不会停止
- webhooks - 如何在 symfony 5 中实现条带 webhook?