Chartsというフレームワークを使っています。Cocoapodsでインストールしました。

この中でRadarChartViewの表示を変えたいと思います。そのためにはRadarChartRendererを変更する必要があります。

RadarChartViewの中では

internal override func initialize()
{
    super.initialize()

    _yAxis = YAxis(position: .left)

    renderer = RadarChartRenderer(chart: self, animator: _animator, viewPortHandler: _viewPortHandler)

    _yAxisRenderer = YAxisRendererRadarChart(viewPortHandler: _viewPortHandler, yAxis: _yAxis, chart: self)
    _xAxisRenderer = XAxisRendererRadarChart(viewPortHandler: _viewPortHandler, xAxis: _xAxis, chart: self)

    self.highlighter = RadarHighlighter(chart: self)
}

rendererRadarChartRendererのインスタンスです。まずinitializeがinternal指定なのでこれをオーバーライドすることはできません。renderer

open class ChartViewBase: NSUIView, ChartDataProvider, AnimatorDelegate
{
    ...

    /// object responsible for rendering the data
    open var renderer: DataRenderer?

    ...
}

ですのでopenですからカスタムのrendererに置き換えることはできそうです。ただし

    renderer = RadarChartRenderer(chart: self, animator: _animator, viewPortHandler: _viewPortHandler)

で使われる_animator_viewPortHandlerがinternalですので必要なパラメータをRadarChartViewのサブクラスやextensionで与えることはできません。

このような疑問は私だけでなく多くの人が持っているようで

ほか色々あります。2015年のプルリクエストなのでこれが採用される見込みはないのかも知れません。

何か上手いアイディアがあればお知恵を拝借したいと思います。よろしくお願いします。

現在はモジュールを直接書き換えるという乱暴な方法を取っています。

追記(2017年2月7日)

具体的に何をしたいか書かなかったためわかりにくかったかも知れません。

レーダーチャートで一番凹んでいるところに「!」を付与してほしいと上司から頼まれました。例えば試験の成績をレーダーチャートで表して、英語が一番点が低かったらそこに「!」を表示します。

そのためにはRadarChartRendererを変更するしかなく、カスタムのRadarChartRendererを使うにはRadarChartViewのrendererも変更しないといけないのです。

Chartsライブラリはクラス全体はopenになっているものの、internal指定も多く実質的にカスタマイズが難しい構造になっています。