首页 > 解决方案 > iOS 图表雷达图表大小

问题描述

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

在此处输入图像描述

我有点到了那里,但图表本身太小了:

在此处输入图像描述

我期望图表填满屏幕的整个宽度,并使用所有垂直空间。需要明确的是: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]
  }
}

标签: ios-charts

解决方案


似乎它们是轴上的spaceTop和属性,您是否尝试在两个轴上将它们设置为 0 ?spaceBottom

https://github.com/danielgindi/Charts/blob/1bbec78109c7842d130d53ff8811bb6dbe865ba4/Source/Charts/Components/YAxis.swift#L72


推荐阅读