私は現在、IOSチャートを使用していますライブラリへのリンクはこちらです:LinkIOSチャートY軸が正しく整列されていない - チャートココアポッド
現在、グラフは、左の軸ラベルがどのような彼らが必要表すものではありませします。 パンは現在拡大表示されています。
実際のデータセットがある:
yValues = [0,2,4,5,3,4,2,4,5,4,4]
左の軸は0.8単位で実際にここ
左軸を示す画像です。
どうすれば変更できますか?ここで
更新
、彼らがあるべき場所のプロットである
leftAxis.granularity = 1
を設定した後。ただし、[0,1,2,3,4,5] のうち3がスキップされており、左軸に表示されていません。何が原因でしょうか?
マイコード:私はあなたのコードを実行すると
`class ReviewDetailVC: UIViewController, ChartViewDelegate {
@IBOutlet weak var chartView: LineChartView!
var yValues = [Double]()
var yLabels = [String]()
var months = [String]()
var xValues = [String]()
let red = UIColor(hue: 0.9639, saturation: 0.62, brightness: 0.93, alpha: 1.0)
let black = UIColor(red:0.29, green:0.29, blue:0.29, alpha:1.0)
let grey = UIColor(red:0.81, green:0.81, blue:0.81, alpha:1.0)
let avenirDemi = UIFont(name: "AvenirNext-DemiBold", size: 14)
override func viewDidLoad() {
super.viewDidLoad()
chartView.delegate = self
// Chart Ui Settings
chartView.leftAxis.axisMinimum = 0
chartView.leftAxis.axisMaximum = 5
chartView.leftAxis.labelCount = 7
chartView.chartDescription?.text = ""
chartView.xAxis.labelPosition = .bottom
chartView.legend.enabled = false
chartView.scaleYEnabled = false
chartView.scaleXEnabled = true
chartView.doubleTapToZoomEnabled = false
chartView.highlighter = nil
chartView.rightAxis.enabled = false
chartView.xAxis.drawGridLinesEnabled = false
chartView.dragEnabled = true
chartView.scaleXEnabled = false
chartView.scaleYEnabled = false
chartView.zoom(scaleX: 4, scaleY: 1, x: 0, y: CGFloat(AxisDependency.left.rawValue))
chartView.xAxis.labelFont = avenirDemi!
chartView.xAxis.labelTextColor = grey
chartView.leftAxis.labelFont = avenirDemi!
chartView.leftAxis.labelTextColor = black
chartView.xAxis.axisLineWidth = 0
chartView.leftAxis.axisLineWidth = 0
chartView.leftAxis.granularity = 1
chartView.xAxis.avoidFirstLastClippingEnabled = true
chartView.xAxis.granularityEnabled = true
chartView.xAxis.granularity = 1
chartView.xAxis.axisMinimum = 0.0
chartView.leftAxis.gridColor = grey
chartView.leftAxis.gridLineDashLengths = [4]
chartView.leftAxis.gridLineWidth = 1.5
chartView.xAxis.centerAxisLabelsEnabled = true
chartView.noDataText = "This person has not reviewed your business."
xValues = ["MAR 10"," MAR 15", "APR 7", "APR 8", "APR 15", "APR 30", "MAY 14", "MAY 21","MAY 31", "MAY 31"]
yLabels = ["0","1","2","3","4","5"]
yValues = [0,2,4,5,3,4,2,4,5,4,4]
let Xformatter = CustomLabelsAxisValueFormatter()
Xformatter.labels = xValues
let Yformatter = CustomYAxisLabelValueFormatter()
Yformatter.Ylabels = yLabels
chartView.xAxis.valueFormatter = Xformatter
chartView.leftAxis.valueFormatter = Yformatter
chartView.animate(yAxisDuration: 1)
setChart(dataPoints: xValues, values: yValues)
}
func setChart(dataPoints: [String], values: [Double]) {
chartView.noDataText = "You need to provide data for the chart."
var dataEntries: [ChartDataEntry] = []
for i in 0..<dataPoints.count {
let dataEntry = ChartDataEntry(x: Double(i)+0.5, y:
values[i])
dataEntries.append(dataEntry)
}
let chartDataSet = LineChartDataSet(values: dataEntries, label: "")
let chartData = LineChartData(dataSets: [chartDataSet])
chartDataSet.drawValuesEnabled = false
chartDataSet.colors = [red]
chartDataSet.drawCirclesEnabled = true
chartDataSet.circleRadius = 16
chartDataSet.circleColors = [red]
chartDataSet.circleHoleRadius = 12
chartDataSet.circleHoleColor = UIColor.white
chartDataSet.lineWidth = 4
chartView.data = chartData
}
@IBAction func backBtnPressed(_ sender: Any) {
self.presentingViewController?.dismiss(animated: true,
completion: nil)
}
}
class CustomLabelsAxisValueFormatter : NSObject, IAxisValueFormatter
{
var labels: [String] = []
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
let count = self.labels.count
guard let axis = axis, count > 0 else {
return ""
}
let factor = axis.axisMaximum/Double(count)
let index = Int((value/factor).rounded())
if index >= 0 && index < count {
return self.labels[index]
}
return ""
}
}
class CustomYAxisLabelValueFormatter : NSObject, IAxisValueFormatter {
var Ylabels: [String] = []
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
let count = self.Ylabels.count
guard let axis = axis, count > 0 else {
return ""
}
let factor = axis.axisMaximum/Double(count)
let index = Int((value/factor).rounded())
if index >= 0 && index < count {
return self.Ylabels[index]
}
return ""
}
}`
質問を更新しました。私は自分のコードも投稿します。 – ethanfox27
私はそれを試して、私は効果が好きです:)しかし、彼らはそれらを修正していません左軸 – ethanfox27
私は答えを更新しました – DevB2F