iOS图表雷达图大小

问题描述

我正在使用Charts库,并试图复制此设计:

enter image description here

我有点到达那儿了,但是图表本身太小了:

enter image description here

我希望图表填充屏幕的整个宽度,并使用所有垂直空间。需要明确的是:RadarChartView是整个黑色区域的宽度,以及直到图例(这不是图表视图本身的一部分)的整个垂直空间。

有什么想法吗?

这是显示图表的表格单元格代码:

import Charts
import UIKit

final class ReportSpiderChart: UITableViewCell {
  private let labels = ["ARTISTS","TRACKS","ALBUMS"]

  @IBOutlet private var chartView: RadarChartView!

  override func awakeFromNib() {
    super.awakeFromNib()

    chartView.webLineWidth = 1
    chartView.innerWebLineWidth = 1
    chartView.webColor = .init(hex: "28282A")
    chartView.innerWebColor = .init(hex: "28282A")
    chartView.legend.enabled = false

    let xAxis = chartView.xAxis
    xAxis.labelFont = .systemFont(ofSize: 11,weight: .semibold)
    xAxis.xOffset = 0
    xAxis.yOffset = 0
    xAxis.labelTextColor = .init(hex: "919198")
    xAxis.valueFormatter = self

    let yAxis = chartView.yAxis
    yAxis.labelCount = 3
    yAxis.labelFont = .systemFont(ofSize: 11,weight: .semibold)
    yAxis.labelTextColor = .init(hex: "919198")
    yAxis.axisMinimum = 0
    yAxis.drawLabelsEnabled = false
  }

  func configure(data: ReportData) {
    let entries: [RadarChartDataEntry] = [
      .init(value: Double(data.artists)),.init(value: Double(data.tracks)),.init(value: Double(data.albums)),]

    chartView.yAxis.axisMaximum = Double(max(max(data.artists,data.tracks),data.albums))

    let dataSet = RadarChartDataSet(entries: entries)
    dataSet.fillColor = UIColor(hex: "FA4B4B").withAlphaComponent(0.75)
    dataSet.fillAlpha = 0.75
    dataSet.drawFilledEnabled = true
    dataSet.lineWidth = 0
    dataSet.drawHighlightCircleEnabled = false
    dataSet.setDrawHighlightIndicators(false)

    let data = RadarChartData(dataSets: [dataSet])
    data.setDrawValues(false)

    chartView.data = data
  }
}

extension ReportSpiderChart: IAxisValueFormatter {
  func stringForValue(_ value: Double,axis: AxisBase?) -> String {
    return labels[Int(value) % labels.count]
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)