饼状图
//
// PieChartController.swift
// chartsTest
//
// Created by yjmac on 2018/7/12.
// Copyright © 2018年 yjmac. All rights reserved.
//
import UIKit
importCharts
classDigitValueFormatter:NSObject,IValueFormatter{
funcstringForValue(_value:Double, entry:ChartDataEntry, dataSetIndex:Int, viewPortHandler:ViewPortHandler?) ->String{
letvalueWithoutDecimalPart =String(format:"%.2f%%", value)
returnvalueWithoutDecimalPart
}
}
classPieChartController:UIViewController{
//饼状图
letpieChart =PieChartView(frame:CGRect(x:0, y:120, width:BKLScreenWidth, height:300))
overridefuncviewDidLoad() {
super.viewDidLoad()
configbarChat()
}
funcconfigbarChat() {
title="饼状图"
view.backgroundColor = .white
view.addSubview(pieChart)
let months = ["1-9", "10-19", "20-29", "30-39","40-49", "50-59", "60-69", "70以上"]
letunitsSold = [30.0,100.0,108.0,60.0,50.0,160.0,187.0,60.0]
setChart(dataPoints: months, values: unitsSold)
}
funcsetChart(dataPoints: [String], values: [Double]) {
vardataEntries: [ChartDataEntry] = []
foriin0..
letentry =PieChartDataEntry(value: values[i], label:"\(dataPoints[i])")//设置数据 title和对应的值
dataEntries.append(entry)
}
letpiechartDataSet =PieChartDataSet(values: dataEntries, label:"年龄库示例")
letpieChartData =PieChartData(dataSet: piechartDataSet)
pieChart.data= pieChartData
//设置最小的padding(图表对于整个 Chart),默认为10,不设置大一点可能会造成数据在 Chart 外无法显示
pieChart.minOffset = 30
//饼状图距离边缘的间隙
pieChart.setExtraOffsets(left:30, top:0, right:30, bottom:0)
//拖拽饼状图后是否有惯性效果
pieChart.dragDecelerationEnabled = true
//是否显示区块文本
pieChart.drawSlicesUnderHoleEnabled = true
//是否根据所提供的数据, 将显示数据转换为百分比格式
pieChart.usePercentValuesEnabled = true
// 设置饼状图描述
pieChart.chartDescription?.text = "饼状年龄库图示例"
pieChart.chartDescription?.font = .systemFont(ofSize: 10)
pieChart.chartDescription?.textColor = .gray
// 设置饼状图图例样式
//图例在饼状图中的大小占比, 这会影响图例的宽高
pieChart.legend.maxSizePercent = 1
//文本间隔
pieChart.legend.formToTextSpace = 5
//字体大小
pieChart.legend.font= .systemFont(ofSize:10)
//字体颜色
pieChart.legend.textColor = .gray
//图例在饼状图中的位置
pieChart.legend.verticalAlignment = .bottom
//图示样式: 方形、线条、圆形
pieChart.legend.form = .circle
//图示大小
pieChart.legend.formSize = 12
//图示位置
pieChart.legend.orientation = .horizontal
pieChart.legend.horizontalAlignment = .center
//设置动画
pieChart.animate(xAxisDuration:1)
//设置饼状图中间的空心样式
//饼状图是否是空心
pieChart.drawHoleEnabled = true
//空心半径占比
pieChart.holeRadiusPercent = 0.5
//空心颜色
pieChart.holeColor = .white
//半透明空心半径占比
pieChart.transparentCircleRadiusPercent = 0.52
//半透明空心的颜色
pieChart.transparentCircleColor = .red
//是否显示中间文字
pieChart.drawCenterTextEnabled = true
//中间文字
pieChart.centerText = "平均年龄";
//相邻区块之间的间距
piechartDataSet.sliceSpace=0
//设置区块颜色
piechartDataSet.colors= [.red,.orange,.purple,.yellow]
//选中区块时, 放大的半径
piechartDataSet.selectionShift=8
//名称位置
piechartDataSet.xValuePosition= .insideSlice
//数据位置
piechartDataSet.yValuePosition= .outsideSlice
//数据与区块之间的用于指示的折线样式
//折线中第一段起始位置相对于区块的偏移量, 数值越大, 折线距离区块越远
piechartDataSet.valueLinePart1OffsetPercentage = 0.85
//折线中第一段长度占比
piechartDataSet.valueLinePart1Length=0.5
//折线中第二段长度最大占比
piechartDataSet.valueLinePart2Length=0.4
//折线的粗细
piechartDataSet.valueLineWidth=1
//折线颜色
piechartDataSet.valueLineColor= .gray
//设置百分比
pieChartData.setValueFormatter(DigitValueFormatter())
//字体颜色为白色
pieChartData.setValueTextColor(.gray)
//字体大小
pieChartData.setValueFont(.systemFont(ofSize:10))
}
}
网友评论