Charts: Dukungan sumbu bernama?

Dibuat pada 18 Apr 2015  ·  36Komentar  ·  Sumber: danielgindi/Charts

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

Melihat wiki android, tetapi tidak menemukan kemungkinan untuk memberi nama sumbu x atau y.

Apakah itu mungkin?

feature help wanted ★★★

Komentar yang paling membantu

Saya baru saja mengalami ini juga. Sayang sekali permintaan fitur ini telah dibuka sekitar 4 tahun sekarang. Untuk menerapkannya saya menulis perender sumbu y kustom saya sendiri. Untuk mencapai judul seperti itu di sumbu kiri, Anda dapat melakukan sesuatu seperti ini:

Dalam konfigurasi grafik Anda:

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

Dan buat perender khusus Anda:

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)
    }
}

Contoh ini akan membuat judul sumbu y dengan offset / padding kiri 20px, dan label sumbu y dengan offset kiri 45px.

Saya harap ini membantu beberapa orang ...

Semua 36 komentar

Semua yang didukung dalam versi Android didukung di sini dengan API yang sama persis!

@danielgindi Saya mengerti ini dan sudah membaca dokumentasinya tetapi mungkin saya melewatkan sesuatu, apakah Anda tahu jawaban atas pertanyaan saya?

Nah saat ini belum diimplementasikan - Saat ini saya tidak berencana untuk mengimplementasikannya, jadi Anda bisa melakukannya :-)
Atau Anda dapat memintanya di repo MPAndroidChart dan setelah selesai saya akan menariknya di sini juga

+1, Ini akan menjadi fitur yang luar biasa dan penting - kita semua diajarkan sejak sekolah dasar untuk memberi judul sumbu kita! :)

itu mungkin. Saya pernah melakukan ini sebelumnya. sama seperti memutar label sumbu x. Seluruh titik menghitung titik jangkar yang benar untuk rotasi.

Saya bisa melakukan PR, tapi pertanyaannya adalah, yang saya lakukan hanyalah 90 rotasi dan berpusat di tengah sumbu y dengan teks sederhana dan warna teks, font. Begitu kami mendukungnya secara resmi, orang akan bertanya lebih banyak, seperti sudut berbeda, posisi, banyak garis, dll ... Itu menyakitkan

Saya kurang mengikuti penjelasan Anda, karena tidak ada properti label sumbu untuk menerapkan rotasi dan pemusatan. Apakah Anda hanya bermaksud menambahkan label secara manual ke tampilan bagan dan secara manual menerapkan beberapa transformasi padanya?

Dengan hormat, saya menyarankan bahwa bahkan label sumbu dasar akan menjadi manfaat besar, dan Anda tidak akan dipaksa untuk mendukung lebih banyak fitur daripada yang Anda inginkan (lagipula, saat ini Anda tidak berencana untuk mendukung yang ini). Semoga Anda mempertimbangkan kembali!

@UberJason Maksud saya, saya membuat subkelas kelas sumbu dan menerapkan properti axisName dan membuat rotasi kaki. Sebagian besar pekerjaan yang disesuaikan dapat menggunakan subclass + override untuk mencapainya.

Saya sedang berlibur .. jadi saya dapat memeriksa kode lama saya dan mengajukan PR untuk v3.

+1 Ingin sekali melihat fitur ini

+1 Ingin sekali melihat fitur ini

+1 Ingin sekali melihat fitur ini

+1 Ingin sekali melihat fitur ini

apakah ini diterapkan?

+1 Ingin sekali melihat fitur ini

+1

Apakah ada cara untuk mendapatkan posisi bingkai yang dapat digunakan untuk memasukkan UIView kustom?

+1 ingin sekali melihat fitur itu

apakah ini diterapkan? saya perlu ini.

Ada PR # 2387, tapi belum ditinjau.

+1 ingin sekali melihat fitur itu

+1 ingin sekali melihat fitur itu

+1 ingin sekali melihat fitur ini. .....

+1 ingin sekali melihat fitur itu

+1 fitur ini akan sangat bagus !!

+1

lihat # 2452 dan # 2387

+1 ingin sekali melihat fitur itu

Beri saya +1 juga

Benar-benar dapat menggunakan fitur ini ....

Saya juga menginginkan fitur ini.

Menunggu ....

Saya juga............

Saya juga menginginkan fitur ini ..

Saya menginginkan fitur ini juga .. Saya lelah untuk setiap pembaruan penulisan ulang

Saya telah melihat banyak pembicaraan tentang menambahkan judul sumbu pada banyak utas, tetapi masih belum menemukan contoh kode cara menambahkannya. Saya menggunakan Swift 4.2. Bagan saya berfungsi dengan baik selain saya tidak bisa menampilkan judul sumbu. Apakah ada yang punya contoh kode?

Saya baru saja mengalami ini juga. Sayang sekali permintaan fitur ini telah dibuka sekitar 4 tahun sekarang. Untuk menerapkannya saya menulis perender sumbu y kustom saya sendiri. Untuk mencapai judul seperti itu di sumbu kiri, Anda dapat melakukan sesuatu seperti ini:

Dalam konfigurasi grafik Anda:

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

Dan buat perender khusus Anda:

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)
    }
}

Contoh ini akan membuat judul sumbu y dengan offset / padding kiri 20px, dan label sumbu y dengan offset kiri 45px.

Saya harap ini membantu beberapa orang ...

Mencoba solusi yang lebih sederhana menggunakan SwiftUI:
https://github.com/danielgindi/Charts/issues/4405

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

cilasgimenez picture cilasgimenez  ·  4Komentar

coop44483 picture coop44483  ·  3Komentar

deepumukundan picture deepumukundan  ·  3Komentar

kirti0525 picture kirti0525  ·  3Komentar

Aungbandlab picture Aungbandlab  ·  4Komentar