Charts: λͺ…λͺ… 된 μΆ• 지원?

에 λ§Œλ“  2015λ…„ 04μ›” 18일  Β·  36μ½”λ©˜νŠΈ  Β·  좜처: danielgindi/Charts

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

μ•ˆλ“œλ‘œμ΄λ“œ μœ„ν‚€λ₯Ό λ³΄μ•˜μ§€λ§Œ 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 λ‚˜λŠ” μΆ• 클래슀λ₯Ό μ„œλΈŒ 클래 μ‹±ν•˜κ³  axisName 속성을 μ μš©ν•˜κ³  λ°œκ°€λ½ νšŒμ „μ„ λ§Œλ“€μ—ˆλ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ μ‚¬μš©μž μ •μ˜ μž‘μ—…μ€ μ„œλΈŒ 클래슀 + μ˜€λ²„λΌμ΄λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 달성 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

νœ΄κ°€ μ€‘μž…λ‹ˆλ‹€. 이전 μ½”λ“œλ₯Ό ν™•μΈν•˜κ³  v3에 λŒ€ν•œ PR을 μ œμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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

이 μ˜ˆμ œλŠ” μ™Όμͺ½ μ˜€ν”„μ…‹ / νŒ¨λ”©μ΄ 20px 인 y μΆ• 제λͺ©κ³Ό μ™Όμͺ½ μ˜€ν”„μ…‹μ΄ 45px 인 y μΆ• λ ˆμ΄λΈ”μ„ λ Œλ”λ§ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 이것이 μ–΄λ–€ μ‚¬λžŒλ“€μ—κ²Œ λ„μ›€μ΄λ˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

SwiftUIλ₯Ό μ‚¬μš©ν•˜μ—¬ 더 κ°„λ‹¨ν•œ ν•΄κ²° 방법 μ‹œλ„ :
https://github.com/danielgindi/Charts/issues/4405

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰