Charts: 名前付き軸のサポート?

作成日 2015年04月18日  ·  36コメント  ·  ソース: danielgindi/Charts

2015-04-19 00-48-45 lifts rimmer sk last -1

android wikiを調べましたが、x軸またはy軸に名前を付ける可能性は見つかりませんでした。

それは可能ですか?

feature help wanted ★★★

最も参考になるコメント

私もこれに出くわしました。 この機能リクエストが約4年間開かれているのは残念です。 それを実装するために、私は独自のカスタムy軸レンダラーを作成しました。 左軸でそのようなタイトルを達成するには、次のようなことを行うことができます。

チャート構成の場合:

leftAxis.xOffset = 45
leftYAxisRenderer = MyYAxisRenderer(viewPortHandler: viewPortHandler, yAxis: leftAxis, transformer: getTransformer(forAxis: .left))

そして、カスタムレンダラーを作成します。

class MyYAxisRenderer: YAxisRenderer {
    private static let titleLabelPadding: CGFloat = 20

    /**
     Unfortunately iOS Charts has marked many of its methods with internal visibily
     so they cannot be customized. Instead you often need to re-implement logic from
     the charting framework.
    */
    override func renderAxisLabels(context: CGContext) {
        // Render the y-labels.
        super.renderAxisLabels(context: context)

        // Render the y-axis title using our custom renderer.
        renderTitle(title: "Lorem ipsum dolor sit amet", inContext: context, x: MyYAxisRenderer.titleLabelPadding)
    }
}

// MARK: Y-Axis titles.
private extension MyYAxisRenderer {
    func renderTitle(title: String, inContext context: CGContext, x: CGFloat) {
        guard let yAxis = self.axis as? YAxis else { return }

        let attributes: [NSAttributedString.Key: Any] = [
            .font: yAxis.labelFont,
            .foregroundColor: yAxis.labelTextColor
        ]

        // Determine the chart title's y-position.
        let titleSize = title.size(withAttributes: attributes)
        let verticalTitleSize = CGSize(width: titleSize.height, height: titleSize.width)
        let point = CGPoint(x: x, y: (viewPortHandler.chartHeight - verticalTitleSize.height) / 2)

        // Render the chart title.
        ChartUtils.drawText(context: context,
                            text: title,
                            point: point,
                            attributes: attributes,
                            anchor: .zero,
                            angleRadians: .pi / -2)
    }
}

この例では、左オフセット/パディングが20pxのy軸タイトルと、左オフセットが45pxのy軸ラベルをレンダリングします。

これが何人かの人々に役立つことを願っています...

全てのコメント36件

Androidバージョンでサポートされているものはすべて、まったく同じAPIでここでサポートされています。

@danielgindi私はこれを理解し、すでにドキュメントを読んでいますが、何かを見逃している可能性があります。私の質問に対する答えを知っていますか?

さて、現在それは実装されていません-私は現在実装する予定がないので、あなたはそれを行うことができます:-)
または、MPAndroidChartリポジトリでリクエストすることもできます。完了したら、ここにもプルします。

+1、これは素晴らしくて重要な機能です-私たちは小学生から私たちの軸にタイトルを付けるように教えられています! :)

可能です。 私は以前にこれをしました。 x軸ラベルを回転させるのと同じです。 ポイント全体は、回転の正しいアンカーポイントを計算しています。

私はPRを行うことができましたが、問題は、単純なテキストとテキストの色、フォントを使用して、単純に90回転し、y軸の中央に配置することです。 私たちが公式にサポートすると、人々はさまざまな角度、位置、複数の線など、もっと質問するでしょう...それは苦痛です

回転とセンタリングを適用する軸ラベルプロパティがないため、私はあなたの説明に完全には従いません。 チャートビューに手動でラベルを追加し、それにいくつかの変換を手動で適用したということですか?

敬意を表して、基本的な軸ラベルでさえ大きなメリットがあり、必要以上の機能をサポートする必要がないことをお勧めします(結局のところ、現在、これをサポートする予定はありません)。 あなたが再考することを願っています!

@UberJasonつまり、axisクラスをサブクラス化し、axisNameプロパティを適用して、つま先を回転させました。 ほとんどのカスタマイズされた作業は、サブクラス+オーバーライドを使用して実現できます。

私は休暇中です。古いコードを確認して、v3のPRを提出することがあります。

+1この機能を見たい

+1この機能を見たい

+1この機能を見たい

+1この機能を見たい

これは実装されていますか?

+1この機能を見たい

+1

カスタムUIViewを挿入するために使用できるフレーム位置を取得する方法はありますか?

+1はその機能を見たいです

これは実装されていますか? 私はこれを必要とする。

PR#2387がありますが、まだレビューされていません。

+1はその機能を見たいです

+1はその機能を見たいです

+1はこの機能を見たいと思っています。 ....。

+1はその機能を見たいです

+1この機能は素晴らしいでしょう!!

+1

#2452と#2387を見てください

+1はその機能を見たいです

私も+1

本当にこの機能を使用できますか...

私もこの機能が欲しいです。

それを待っています...

私も............

私もこの機能が欲しいです。

私もこの機能が欲しいです..私は書き直しのすべての更新にうんざりしています

複数のスレッドに軸タイトルを追加することについて多くの話を見てきましたが、それらを追加する方法のコード例はまだ見つかりません。 私はSwift4.2を使用しています。 軸のタイトルを表示できないことを除けば、チャートはうまく機能しています。 誰かがコード例を持っていますか?

私もこれに出くわしました。 この機能リクエストが約4年間開かれているのは残念です。 それを実装するために、私は独自のカスタムy軸レンダラーを作成しました。 左軸でそのようなタイトルを達成するには、次のようなことを行うことができます。

チャート構成の場合:

leftAxis.xOffset = 45
leftYAxisRenderer = MyYAxisRenderer(viewPortHandler: viewPortHandler, yAxis: leftAxis, transformer: getTransformer(forAxis: .left))

そして、カスタムレンダラーを作成します。

class MyYAxisRenderer: YAxisRenderer {
    private static let titleLabelPadding: CGFloat = 20

    /**
     Unfortunately iOS Charts has marked many of its methods with internal visibily
     so they cannot be customized. Instead you often need to re-implement logic from
     the charting framework.
    */
    override func renderAxisLabels(context: CGContext) {
        // Render the y-labels.
        super.renderAxisLabels(context: context)

        // Render the y-axis title using our custom renderer.
        renderTitle(title: "Lorem ipsum dolor sit amet", inContext: context, x: MyYAxisRenderer.titleLabelPadding)
    }
}

// MARK: Y-Axis titles.
private extension MyYAxisRenderer {
    func renderTitle(title: String, inContext context: CGContext, x: CGFloat) {
        guard let yAxis = self.axis as? YAxis else { return }

        let attributes: [NSAttributedString.Key: Any] = [
            .font: yAxis.labelFont,
            .foregroundColor: yAxis.labelTextColor
        ]

        // Determine the chart title's y-position.
        let titleSize = title.size(withAttributes: attributes)
        let verticalTitleSize = CGSize(width: titleSize.height, height: titleSize.width)
        let point = CGPoint(x: x, y: (viewPortHandler.chartHeight - verticalTitleSize.height) / 2)

        // Render the chart title.
        ChartUtils.drawText(context: context,
                            text: title,
                            point: point,
                            attributes: attributes,
                            anchor: .zero,
                            angleRadians: .pi / -2)
    }
}

この例では、左オフセット/パディングが20pxのy軸タイトルと、左オフセットが45pxのy軸ラベルをレンダリングします。

これが何人かの人々に役立つことを願っています...

SwiftUIを使用してより簡単な回避策を試す:
https://github.com/danielgindi/Charts/issues/4405

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

Bharati555 picture Bharati555  ·  4コメント

brytnvmg picture brytnvmg  ·  4コメント

kirti0525 picture kirti0525  ·  3コメント

BrandonShega picture BrandonShega  ·  4コメント

valeIT picture valeIT  ·  3コメント