μ 릴리μ€μμλ μΌλΆ κ·Έλνλ₯Ό μμ±νλ λ° λ¬Έμ κ° μμμ§λ§ μ΄μ μ½λλ λ€μκ³Ό κ°μ΅λλ€.
func setChart(dataPoints: [String], values: [Double]) {
var dataEntries: [BarChartDataEntry] = []
for i in 0..<dataPoints.count {
let dataEntry = BarChartDataEntry(value: values[i], xIndex: i)
dataEntries.append(dataEntry)
}
let chartDataSet = BarChartDataSet(yVals: dataEntries, label: "Units Sold")
let chartData = BarChartData(xVals: months, dataSet: chartDataSet)
barChartView.data = chartData
}
λ€μ νμ μ¬μ©νμ¬ μ λ°°μ΄κ³Ό κ°μ κ°μ μ λ¬ν μ μμ΅λλ€.
let chartData = BarChartData(xVals: months, dataSet: chartDataSet)
μ λ¦΄λ¦¬μ€ ν λμΌν κ·Έλνλ₯Ό ꡬννλ μ½λλ λ€μκ³Ό κ°μ΅λλ€.
func setChart(dataPoints: [String], values: [Double]) {
var dataEntries: [BarChartDataEntry] = []
for i in 0..<dataPoints.count {
let dataEntry = BarChartDataEntry(x: Double(i+2), y:values[i], data: months )
dataEntries.append(dataEntry)
}
let chartDataSet = BarChartDataSet(values: dataEntries, label: "Units Sold")
let chartData = BarChartData()
chartData.addDataSet(chartDataSet)
barChartView.data = chartData
}
λͺ μκ° λμ μλνμ§λ§ X μΆ κ°μ μμ νλ λ°©λ²μ μ°Ύμ μ μμμ΅λλ€. λκ΅°κ°κ° λλ₯Ό λμΈ μ μκΈ°λ₯Ό λ°λλλ€. κ°μ¬ν©λλ€!!
λΆμ°ν μ°¨νΈμμ xμΆ κ°μ μμ νλλ° μ§κΈ μλ μ€μ
λλ€.
2μ μ μ°Ύμμ΅λλ€.
1: dataEntry = BarChartDataEntry(x: Double(i+2), y:values[i], λ°μ΄ν°: κ°μ )
BarChartDataEntry λ©μλ λμ ChartDataEntry(x,y)λ₯Ό μ¬μ©νμμμ€.
2: chartData = BarChartData() -> chartData = BarChartData(dataset)λ‘ μ€μ
λμμ΄ λκΈ°λ₯Ό λ°λλλ€.
NyoSeintμκ² κ°μ¬ν©λλ€. xμΆμ μμ ν μ μλ λ°©λ²μ΄ μ³μμ§λ§ μ«μ λ°©μμΌλ‘ μ΄ κ²½μ°μλ xμΆμ λͺ λ¬ λμ λ¬Έμμ΄μ λ£μΌλ €κ³ ν©λλ€.
ChartsDemoλ₯Ό νμΈνμ΅λκΉ? λλ λ΅μ΄ μλ€κ³ λ―Ώμ΅λλ€.
λλ λν μ΄κ²μ λν λ΅λ³μ μ°Ύκ³ μμΌλ©° μ¬κΈ°μμ λ μΌμ° μ¬λ‘λ₯Ό μ΄μμ΅λλ€ - https://github.com/danielgindi/Charts/issues/1331
λ°λͺ¨μμ λ΅μ μ°Ύμ μ μμ΅λλ€. ν΄κ²°μ± μ μ°ΎμΌλ©΄ μλ €μ£ΌμΈμ. κ°μ¬
ν΄κ²°μ± μ μ°Ύμμ΅λλ€. μ ν΄λμ€λ₯Ό λ§λ€μ§ μκ³ λ λ€λ₯Έ λ°©λ²μ΄ λ λμ λ°©λ²μΌλ‘ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€. μ΄κ²μ΄ μ κ° μ°Ύμ κ²μ λλ€.
λ¨Όμ ν¬λ§·ν° ν΄λμ€κ° λ μ ν΄λμ€λ₯Ό λ§λ€κ³ IAxisValueFormater μΈν°νμ΄μ€λ₯Ό μΆκ°ν λ€μ stringForValue λ©μλλ₯Ό μ¬μ©νμ¬ μ κ°μ μ¬μ©μ μ μνκ³ λ κ°μ λ§€κ° λ³μλ₯Ό μ¬μ©ν©λλ€. 첫 λ²μ§Έλ μ€μ κ°μ λλ€(λ€μκ³Ό κ°μ΄ λ³Ό μ μμ΅λλ€. μΈλ±μ€) λ λ²μ§Έλ κ°μ΄ μλ μΆμ λλ€.
import UIKit
import Foundation
import Charts
@objc(BarChartFormatter)
public class BarChartFormatter: NSObject, IAxisValueFormatter{
var months: [String]! = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
public func stringForValue(value: Double, axis: AxisBase?) -> String {
return months[Int(value)]
}
}
μ΄μ νμΌμμ setChart() ν¨μ μμ λΆλΆμ λ κ°μ λ³μλ₯Ό λ§λ€μ΄μΌ ν©λλ€. νλλ ν¬λ§·ν° ν΄λμ€μ©μ΄κ³ λ€λ₯Έ νλλ μΆ ν΄λμ€μ©μ λλ€.
let formato:BarChartFormatter = BarChartFormatter()
let xaxis:XAxis = XAxis()
λ€μμΌλ‘ for in 루νμ λμΌλ‘ μ΄λνμ¬ μΈλ±μ€μ μΆμ ν¬λ§·ν° λ³μμ μ λ¬ν©λλ€.
formato.stringForValue(Double(i), axis: xaxis)
루ν ν μΆ λ³μμ νμμ μΆκ°νμμμ€.
xaxis.valueFormatter = formato
λ§μ§λ§ λ¨κ³λ barChartViewμ μλ‘μ΄ xaxisformattedλ₯Ό μΆκ°νλ κ²μ λλ€.
barChartView.xAxis.valueFormatter = xaxis.valueFormatter
setChart() ν¨μμ λ€λ₯Έ λͺ¨λ μ€μ κ·Έλλ‘ λμμμ€. λμμ΄ λκΈ°λ₯Ό λ°λλλ€.
@ajimenezjulio μ΄κ²μ μ λ§ μ¬λ°λ₯Έ λ°©λ²μ λλ€ :-)
μ°λ¦¬λ λ 립μ μΈ x-κ° λλ¬Έμ μ§κΈ ν¬λ§·ν°λ₯Ό μ¬μ©νκ³ μμ΅λλ€. μ΄κ²μ λ¨μν x-μμΈ λ°°μ΄μ μ¬μ©νλ μ¬λλ€μκ²λ λ¬Όλ‘ λ νΈμνμ§λ§ λͺ¨λ κ°λ₯μ±μ μΈκ³λ₯Ό μ½λλ€. μ΄κ²μ λ μ΄λΈκ³Ό ν¨κ» x-μμΈμ 미리 μ μν΄μΌ νλ μ μ½μ μ κ±°νμ΅λλ€.
λλ λ―Έλμ μ΄μ κ°μ λ¨μν μν©μ λλΉνμ¬ μ½λλ₯Ό λ μμ±νλ μλ‘μ΄ λ°©λ²μ μ μν κ²μ΄λΌκ³ νμ ν©λλ€.
xaxisλ₯Ό μ¬μ©μ μ μνλ μ¬μ΄ λ°©λ²μ μλ €μ£ΌμΈμ.
μ΄μ λ²μ μ κ·Έκ²μ λν΄ λ무 μ’μμ΅λλ€! (λλ μ μ΄λ Swift/Objcμ λν νν 리μΌ)
κ³ λ§μ.
λͺ¨λ μ λ°μ΄νΈ ?
@dante20007 μ£μ‘ν©λλ€. λͺ¨λ κ²μ κ°μ§ μλ μμ΅λλ€. μ¬λλ€μ 0, 1, 2λΏλ§ μλλΌ 0, 1.3, 2.7 λ± λͺ¨λ x-μμΈμ νλͺ©μ μΆκ°ν μ μκΈ°λ₯Ό μν©λλ€. λ°°μ΄μ μ΄λ¬ν κ°μ λν λ μ΄λΈμ λνλΌ μ μμ΅λλ€.
XμΆμ μμ νμνλ €λ©΄ μ΄λ»κ² ν©λκΉ? μμ λΆκ°λ₯ ?
κ³ λ§μ.
μλ νμΈμ, μ΄ μ루μ μ μΆκ°νλ €κ³ νμ§λ§ μ€λ₯Έμͺ½μΌλ‘ μ΄λνλ©΄ μΈλ±μ€κ° λ²μλ₯Ό λ²μ΄λ¬λ€κ³ ν©λλ€. 12κ°μ λ°μ λ¨μ§ μμμ΅λλ€.
λν xμΆμ μ¬μ©μ μ μνλ μ¬μ΄ λ°©λ²μ΄ νμν©λλ€. μ΄ λλ¬Έμ μ΄μ λ²μ μ μ°¨νΈλ‘ λμκ°μ΅λλ€.
μ΄κ²μ λ΄ λ¬Έμ λ₯Ό μ¬μ©μ μ μνλ μ¬μ΄ λ°©λ²μ΄λ―λ‘ λ€μ λ λλ§μ μμνκΈ° μν΄ μ€λ₯Έμͺ½μΌλ‘ μ΄λν λ libλ₯Ό μμ νκ³ λ λλ§ν λ μΈλ±μ€κ° 무μλλλ‘ λμμ΅λλ€.
μ£μ‘ν©λλ€. "X μΆ κ°μ Swiftλ‘ μμ νλ λ°©λ²"μ λν΄ μ΄μΌκΈ°νκ³ μμμ΅λλ€. λ¬Έμμ΄ μ¬μ©
μ΄ λλ κ·Έλ. @ajimenezjulioμ κ°μ λ΅λ³μ μ¬μ©νμ΅λλ€.
μ λ Objective-Cμ μλ νλ‘μ νΈλ₯Ό μ μ§ κ΄λ¦¬νκ³ μμΌλ©° @ajimenezjulio μ λ΅λ³μ μ¬νν μ μμμ§λ§ μ»΄νμΌλμ§ μμμ΅λλ€. μ΄λ€ μ΄μ λ‘ IAxisValueFormatterκ° μΈμλμ§ μμμ΅λλ€.
λλ λΉμ·ν λ¬Έμ κ° μμλ€. λ¬Έμκ° λ무 짧μ§λ§ x μΆμΌλ‘ μμ νλ €λ©΄ λͺ μ€μ μ½λκ° νμν©λλ€. @ajimenezjulio μμ μ 곡νλ μ½λλ₯Ό μ¬μ©νμ¬ BarChartView μ¬μ©μ λ¨μννκΈ° μν΄ ν΄λμ€ νμ₯μ λ§λ€μμ΅λλ€. λκ΅°κ°μκ² μ μ©ν μλ μμ΅λλ€.
extension BarChartView {
private class BarChartFormatter: NSObject, IAxisValueFormatter {
var labels: [String] = []
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
return labels[Int(value)]
}
init(labels: [String]) {
super.init()
self.labels = labels
}
}
func setBarChartData(xValues: [String], yValues: [Double], label: String) {
var dataEntries: [BarChartDataEntry] = []
for i in 0..<yValues.count {
let dataEntry = BarChartDataEntry(x: Double(i), y: yValues[i])
dataEntries.append(dataEntry)
}
let chartDataSet = BarChartDataSet(values: dataEntries, label: label)
let chartData = BarChartData(dataSet: chartDataSet)
let chartFormatter = BarChartFormatter(labels: xValues)
let xAxis = XAxis()
xAxis.valueFormatter = chartFormatter
self.xAxis.valueFormatter = xAxis.valueFormatter
self.data = chartData
}
}
μ©λ²
func setChart(){
let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
let unitsSold = [20.0, 4.0, 3.0, 6.0, 12.0, 16.0, 4.0, 18.0, 2.0, 4.0, 5.0, 4.0]
barChartView.setBarChartData(xValues: months, yValues: unitsSold, label: "Monthly Sales")
}
μ΄λ΄, λ€λ₯Έ μ°¨νΈ νμ₯λ κ°μ§ μ μμ΅λκΉ?
" BarChartFormatterκ° νλ‘ν μ½ IAxisValueFormatterλ₯Ό μ€μνμ§ μμ΅λλ€." μ€λ₯κ° λ°μν©λλ€.
μμ΄ μ§μ νλμ? Android Studioμμ μ¬μ©νκΈ° λ무 μ¬μ μ΅λλ€. λꡬλ μ§ λ°°μ΄ ["J", "F" λ±...μ XμΆμΌλ‘ κ°μ Έμ€λ λ°©λ²μ μκ³ μμ΅λκΉ? λ μ¬κΈ° λ§νμ΄. μ΄ "μλ λ΄ κΈ°μ μμ€ μ΄μμ λλ€.
ObjCκ° μ¬μ©μ μ μ λ μ΄λΈλ‘ X μΆμ νμμ μ§μ νλ μ루μ μ΄ μμ΅λκΉ?
YourViewControllerViewControllerμμ var months μ μΈ: [String] = λ¬Έμμ΄ λ° νμν μ κ° μ€μ
νμ₯ YourViewControllerViewController: IAxisValueFormatter {
func stringForValue(_ κ°: Double, μΆ: AxisBase?) -> λ¬Έμμ΄ {
κ°μ λ°ν[Int(κ°) % months.count]
}
}
μλ
,
μ루μ
μ μΆκ°νλ €κ³ νμ΅λλ€. νμ§λ§ νμ 'μμΈμ΄ λ²μλ₯Ό λ²μ΄λ¬μ΅λλ€'λΌλ μ€λ₯κ° λ°μν©λλ€.
μ, stringForValue
μ΄ νΈμΆλλ λ°©μκ³Ό μ°¨νΈ/λ°μ΄ν° μ¬μ©μ μ§μ μ΄ λ°μ΄ν°μ λν΄ νΈμΆλλ λ°©μμ λ³κ²½νλ λ°©λ²μ λ μ΄ν΄νμΌλ©΄ ν©λλ€. μΈλ±μ€κ° λ²μλ₯Ό λ²μ΄λμ§ μλλ‘ μ΄ κ²μ¬ μ€ μΌλΆλ₯Ό μννμ΅λλ€. κ·Έλλ μΌμ’
μ λ°μ°½κ³ π€·ββοΈ
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
let index = Int(value)
if index < labels.count && index >= 0 {
return labels[index]
} else {
return ""
}
}
μ΄κΈ° λ²νΌ
@robotsquidward - μ λμ. λ¬Έμμμ μλ λ°©μμ μ€λͺ
νκ±°λ λ°λͺ¨ μ€ νλμμ μλ λ°©λ²μ 보μ¬μ£Όλ©΄ μ’μ κ²μ
λλ€. λ μ΄λΈμ λ¬Έμμ΄μ μ¬μ©ν΄μΌ νλ _λ§μ_ μ¬λλ€μ΄ μλ€κ³ μκ°νμ§λ§ λμμ΄ λ λ§ν λͺ
νν μ€λͺ
μ΄λ μκ° μμ΅λλ€. look at stringForValue()
λΌλ λ΅λ³μ΄ λ§μ΄ 보μ
λλ€. νμ¨μ μ¬λ€...
@AlexSmet
νμ₯μ μν λ§μ κ°μ¬ν©λλ€! κ·Έκ²μ μ μλν©λλ€. κΊΎμμ ν μ°¨νΈλ₯Ό μ¬μ©νκ³ μμΌλ―λ‘ μ½λλ₯Ό μ½κ° μμ νμ΅λλ€. μλνμ§λ§ μκ°μ λ²κ·Έκ° μμ΅λλ€. XμΆμ μμΌμ΄ μ¬λ°λ₯΄κ² μ λ ¬λμ§ μμ μ΄μ λ₯Ό μ μ μμ΅λκΉ? λν μμμΌκ³Ό μμμΌμ΄ 2λ² μ°μμΌλ‘ νμλ©λλ€.
μ€ν¬λ¦°μ· 보기: https://imgur.com/a/OG7OuSY
dataContent1 = ["μ", "ν", "μ", "λͺ©", "κΈ"]
dataContent2 = [230, 320, 403, 430, 312]
chartView.setLineChartData(xValues: dataContent1, yValues: dataContent2, λ μ΄λΈ: "BTC")
@benzai
xAxisμ λν λ μ΄λΈ μλ₯Ό μ€μ ν΄μΌ ν©λλ€. κ΄μ° νμ₯κ³Ό κ°μ μ½λλ₯Ό μ¬μ©νλ κ²½μ° setLineChartData ν¨μμ λ¬Έμμ΄μ νλλ§ μΆκ°νμμμ€.
self.xAxis.setLabelCount(xValues.count, force: true)
@benzai λ΄ μ°¨νΈκ° 12κ°μμ μ¬λ°λ₯΄κ² νμνλ €λ©΄ @AlexSmet μ μ κ·Ό λ°©μμ μ½κ° μμ νκ³ force: false
λ₯Ό μ€μ ν΄μΌ νμ΅λλ€.
barChartView.xAxis.setLabelCount(dataPoints.count, force: false)
force
κ° trueλ‘ μ€μ λλ©΄ μ°¨νΈλ ν¬λ§·ν° λ리μμμ μ΄μν xAxis κ°μ μμ²νκ³ (μ: 0.0 λμ -0.5) λ μ΄λΈμ΄ ν΄λΉ yValueμ μ¬λ°λ₯΄κ² μ λ ¬λμ§ μμμ΅λλ€.
λ¬Έμ λ§ν¬μ μ 'trueμΈ κ²½μ° μ€μ λ y-λ μ΄λΈ μκ° κ°μ μ μ©λ©λλ€'λΌκ³ νμλμ΄ μ΄κ²μ΄ y-λ μ΄λΈμ μν κ²μμ μμνμ§λ§ x λ° yμΆ λ μ΄λΈ λͺ¨λμ μ μ©λλ κ²μ²λΌ λ€λ¦½λλ€. λ§μ΅λκΉ?
μΌμͺ½ μΆμ λ¬Έμμ΄ λ μ΄λΈμ μ€μ ν μ μμ΅λκΉ?
λΌμΈ μ°¨νΈλ‘:
self.lineChart.xAxis.valueFormatter = IndexAxisValueFormatter(values: self.chartLabels)
self.lineChart.xAxis.avoidFirstLastClippingEnabled = true
μ€λ κΈ°λΆμ΄ μ΄λ μΈμ.
λμμ£ΌμΈμ. Swift 4 νλ‘μ νΈμ λ§λ μ°¨νΈλ‘ κ°μ μ€μ νκ³ μΆμ΅λλ€.
μ΄λ° μ’
λ₯μ κΊΎμμ ν μ°¨νΈλ₯Ό κ·Έλ¦¬κ³ μΆμ΅λλ€.
λ μκ° κ°κ²© μ¬μ΄μ μ¬λ¬ μ μ μΆκ°νλ λ°©λ²μ 무μμ
λκΉ? (μ, μ€μ 7μμμ μ€μ 8μ μ¬μ΄μ μ¬λ¬ κ°μ μ μ νμνλ €λ κ²½μ°)
κ°μ₯ μ μ©ν λκΈ
λλ λΉμ·ν λ¬Έμ κ° μμλ€. λ¬Έμκ° λ무 짧μ§λ§ x μΆμΌλ‘ μμ νλ €λ©΄ λͺ μ€μ μ½λκ° νμν©λλ€. @ajimenezjulio μμ μ 곡νλ μ½λλ₯Ό μ¬μ©νμ¬ BarChartView μ¬μ©μ λ¨μννκΈ° μν΄ ν΄λμ€ νμ₯μ λ§λ€μμ΅λλ€. λκ΅°κ°μκ² μ μ©ν μλ μμ΅λλ€.
μ©λ²