Charts: دعم المحور المحدد؟

تم إنشاؤها على ١٨ أبريل ٢٠١٥  ·  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)
    }
}

سيعرض هذا المثال عنوان المحور ص بإزاحة يسرى / مساحة مترو 20 بكسل ، وتسميات المحور ص بإزاحة أيسر بمقدار 45 بكسل.

آمل أن يساعد هذا بعض الناس...

ال 36 كومينتر

كل شيء مدعوم في إصدار Android مدعوم هنا بنفس واجهة برمجة التطبيقات بالضبط!

danielgindi أنا أفهم هذا وقد قرأت المستندات بالفعل ولكن ربما فاتني شيء ، هل تعرف إجابة سؤالي؟

حسنًا ، لم يتم تنفيذه حاليًا - لا أخطط حاليًا للتنفيذ ، لذا يمكنك القيام بذلك :-)
أو يمكنك طلب ذلك في MPAndroidChart repo وعندما يتم ذلك ، سأقوم بسحبه هنا أيضًا

+1 ، ستكون هذه ميزة رائعة ومهمة - لقد تعلمنا جميعًا منذ المدرسة الابتدائية تسمية محاورنا! :)

إنه ممكن. لقد فعلت هذا من قبل. تمامًا مثل تدوير تسميات المحور س. النقطة الكاملة هي حساب نقطة الربط الصحيحة للدوران.

يمكنني إجراء العلاقات العامة ، لكن السؤال هو ، ما فعلته هو ببساطة 90 دوران ومتمركز في منتصف المحور y بنص بسيط ولون نص ، خط. بمجرد أن ندعمها رسميًا ، سيطلب الناس المزيد ، مثل زاوية مختلفة ، وموضع ، وخطوط متعددة ، وما إلى ذلك ... هذا مؤلم

لا أتبع تفسيرك تمامًا ، لأنه لا توجد خاصية تسمية المحور لتطبيق التدوير والتوسيط عليها. هل تقصد فقط أنك أضفت تسمية يدويًا إلى طريقة عرض المخطط وقمت يدويًا بتطبيق بعض التحويلات عليها؟

مع الاحترام ، أقترح أنه حتى تسميات المحاور الأساسية ستكون ذات فائدة كبيرة ، ولن تضطر إلى دعم أي ميزات أكثر مما تريد (بعد كل شيء ، أنت لا تخطط حاليًا لدعم هذه الميزة). آمل أن تعيد النظر!

UberJason أعني أنني قمت

أنا في إجازة .. لذا يمكنني التحقق من الكود القديم وتقديم ملف PR لـ v3.

+1 هل أحب رؤية هذه الميزة

+1 هل أحب رؤية هذه الميزة

+1 هل أحب رؤية هذه الميزة

+1 هل أحب رؤية هذه الميزة

هل هذا مطبق؟

+1 هل أحب رؤية هذه الميزة

+1

هل هناك طريقة للحصول على موضع إطار يمكن للمرء استخدامه لإدراج أي UIView مخصص؟

سيحب +1 رؤية هذه الميزة

هل هذا مطبق؟ أحتاج هذا.

يوجد رقم PR # 2387 ، لكن لم تتم مراجعته بعد.

سيحب +1 رؤية هذه الميزة

سيحب +1 رؤية هذه الميزة

سيحب +1 رؤية هذه الميزة. .....

سيحب +1 رؤية هذه الميزة

إجراء 1+ لهذه الميزة سيكون رائعًا !!

+1

انظر إلى # 2452 و # 2387

سيحب +1 رؤية هذه الميزة

+1 لي أيضًا

يمكن حقًا استخدام هذه الميزة ....

اريد هذه الميزة ايضا.

ينتظر....

أنا أيضا............

اريد هذه الميزة ايضا ..

أريد هذه الميزة أيضًا .. لقد سئمت من كل تحديث لإعادة الكتابة

لقد رأيت الكثير من الحديث حول إضافة عناوين المحاور في سلاسل رسائل متعددة ، ولكن ما زلت لم أعثر على مثال رمز لكيفية إضافتها. أنا أستخدم Swift 4.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)
    }
}

سيعرض هذا المثال عنوان المحور ص بإزاحة يسرى / مساحة مترو 20 بكسل ، وتسميات المحور ص بإزاحة أيسر بمقدار 45 بكسل.

آمل أن يساعد هذا بعض الناس...

تجربة حل أبسط باستخدام SwiftUI:
https://github.com/danielgindi/Charts/issues/4405

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

coop44483 picture coop44483  ·  3تعليقات

Aungbandlab picture Aungbandlab  ·  4تعليقات

deepumukundan picture deepumukundan  ·  3تعليقات

valeIT picture valeIT  ·  3تعليقات

newbiebie picture newbiebie  ·  3تعليقات