Размер диаграммы радара iOS Charts

#ios-charts

#ios-диаграммы

Вопрос:

Я использую библиотеку диаграмм и пытаюсь воспроизвести этот дизайн:

введите описание изображения здесь

Я вроде как добираюсь туда, но диаграмма становится слишком маленькой:

введите описание изображения здесь

Я ожидаю, что диаграмма заполнит всю ширину экрана и будет использовать все вертикальное пространство. Для ясности: 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]
  }
}
  

Комментарии:

1. попробуйте установить ChartView.minOffset = 0

2. Ничего не меняет

Ответ №1:

Кажется, что это свойство spaceTop and spaceBottom для оси, вы пытались установить для них значение 0 на обеих осях?

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

Комментарии:

1. Разницы нет: (

2. Слишком плохо:( Вы пробовали проверять с помощью xcode inspector? Чтобы увидеть, какой вид создает интервал?