다양한 차트들을 쉽게 나타낼 수 있게 해주는 라이브러리
관련 주소 - https://github.com/danielgindi/Charts
GitHub - danielgindi/Charts: Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroidChart.
Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroidChart. - GitHub - danielgindi/Charts: Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroi...
github.com
UIView에서 Class를 PieChartView로 바꿔주면 Charts라이브러리에 있는 PieChartView가 되게된다.
코드 몇줄만 작성해주면 이 UIView에 PieChart가 나타난다.
사용을 위해 import Charts를 해주면 된다.
PieChart차트에 데이터를 표시하려면, PieChart 데이터 앤트리라는 객체에 데이터를 추가시켜 주어야한다.
메서드 파라미터에서 배열을 전달받는다면, PieChart 데이터 앤트리객체로 매핑시켜주어야함
데이터 엔트리 객체로 매핑시키기 위해선 받아온 JSON데이터를 하나의 List배열로 만들어야 한다
ex)
func 메서드명(파라미터이름: 파라미터자료형) -> [리턴할 배열명]{
return[
파라미터 리스트 1,
파라미터 리스트 2,
파라미터 리스트 3,
...
]
}
이후 엔트리화를 하는데 return된 배열을 엔트리화 메서드에 넣고 엔트리 상수를 생성하고 compactMap 함수로 엔트리화 한다.
[weak self]로 순환참조화 하고 PieChartDataEntry로 만들어준다.
guard let self = self else { return nil } 메서드를 넣으면 잠시 강한참조화가 되며 entries상수는 return 이하의 객체화가 된다.
let entries = 전달받은배열.compactMap{ [weak self] overview -> PieChartDataEntry? in
guard let self = self else { return nil }
return PieChartDataEntry(value: (double형 값), label: (String?), data: (Any?)
}
value: 차트 항목에 들어가는 값
label: PieChart에 표시할 항목의 이름
data: 상세데이터
이 entries를 또다시 dataSet으로 만들어주어야 한다.
let dataSet = PieChartDataSet(entries: 엔트리, label: (그래프 이름))
self.pieChartVIew.data = PieChartData(dataSet: dataSet)
entries: 위에서 생성한 파이차트데이터엔트리
이 후, pieChartView.data에 PieChartData(dataset: 데이터셋) 을 해주면 이제 그래프가 표시된다.
이렇게 되면 파이차트의 그래프의 모든 항목이 단색으로 표시되어 가독성이 떨어진다.
dataSet.sliceSpace = 1 //항목간 간격
dataSet.entryLabelColor = .black //항목이름 색
dataSet.valueTextColor = .black //항목값의 색
dataSet.xValuePosition = .outsideSlice //항목이름 위치
dataSet.valueLinePart1OffsetPercentage = 0.8 //항목의 이름과 가리키는 라인
dataSet.valueLinePart1Length = 0.2 //항목의 이름과 가리키는 라인
dataSet.valueLinePart2Length = 0.3 //항목의 이름과 가리키는 라인
//항목들의 색들을 여러색을 넣어줌
dataSet.colors = ChartColorTemplates.vordiplom() +
ChartColorTemplates.joyful() +
ChartColorTemplates.liberty() +
ChartColorTemplates.pastel() +
ChartColorTemplates.material()
//차트를 회전시킴.
self.pieChartVIew.spin(duration: (애니메이션시간), fromAngle: , toAngle: )
fromAngle: 파이차트의 rotationAngle을
toAngle: 파이차트의 rotationAngle + 몇도 회전할지
ex)
self.pieChartVIew.spin(
duration: 0,
fromAngle: self.pieChartVIew.rotationAngle,
toAngle: self.pieChartVIew.rotationAngle + 80
)
PieChart의 각 항목을 클릭하면 실행되는 메서드:
func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {
<#code#>
}