首页
学习
活动
专区
圈层
工具
发布

iso
EN

Stack Overflow用户
提问于 2017-02-07 13:12:38
回答 1查看 1.5K关注 0票数 1

在迁移到Swift 3之后,我的线图在y轴上显示了奇怪的值.我不确定有问题的是范围还是数据集。但我查过了,y值似乎是正确的。图表本身也显示为蓝色矩形,而不是直线图(我假设是因为y值错误),谁会想到看这张图表会有什么问题呢?

图表

更新:i能够将问题定位到没有正确设置的右轴axisMinimum和axisMaximum。当我对左轴使用相同的代码时,它就完美地工作了。

以下是设置的代码:

代码语言:javascript
复制
class func newLineChartViewWithXValsAndDataSets(frame: CGRect, xVals: [String], dataSets: [SVLineChartDataSet]?, maximum: ChartDataEntry?, minimum: ChartDataEntry?) -> LineChartView {
    let lineChartView = LineChartView(frame: frame)
    let chartData = LineChartData(dataSets: dataSets)
    let margin: CGFloat = 6
    lineChartView.doubleTapToZoomEnabled = false
    lineChartView.dragEnabled = false
    lineChartView.drawGridBackgroundEnabled = false
    lineChartView.drawBordersEnabled = false
    lineChartView.legend.textColor = UIColor.sharevilleLightGrey

    lineChartView.xAxis.labelPosition = .bottom
    lineChartView.xAxis.labelTextColor = UIColor.sharevilleLightGrey
    lineChartView.xAxis.avoidFirstLastClippingEnabled = true
    lineChartView.xAxis.drawGridLinesEnabled = false
    lineChartView.xAxis.axisLineColor = UIColor.sharevilleTouchGrey
    lineChartView.xAxis.valueFormatter = LineChartDateFormatter(dates: xVals)
    lineChartView.xAxis.setLabelCount(3, force: true)

    lineChartView.leftAxis.axisLineColor = UIColor.sharevilleTouchGrey
    //lineChartView.leftAxis.drawLabelsEnabled = false
    //lineChartView.leftAxis.drawAxisLineEnabled = false
    lineChartView.leftAxis.spaceTop = margin
    lineChartView.leftAxis.spaceBottom = margin
    lineChartView.leftAxis.resetCustomAxisMax()
    lineChartView.leftAxis.resetCustomAxisMin()

    lineChartView.rightAxis.labelTextColor = UIColor.sharevilleDarkGrey
    lineChartView.rightAxis.axisLineColor = UIColor.sharevilleTouchGrey
    lineChartView.rightAxis.gridColor = UIColor.sharevilleTouchGrey
    lineChartView.rightAxis.labelPosition = .insideChart
    lineChartView.rightAxis.drawLabelsEnabled = false
    lineChartView.rightAxis.drawAxisLineEnabled = false
    lineChartView.rightAxis.spaceTop = margin
    lineChartView.rightAxis.spaceBottom = margin


    // if we have no maximum and minimumvalue return the linechart directly
    guard let maximum = maximum, let minimum = minimum else {
        return lineChartView
    }

    //let absMinMax = abs(maximum.y - minimum.y)
    //let visibleYRangeMaxium = max(absMinMax,1) * 1.2
   // print("visibile Y Range")
   // print(visibleYRangeMaxium)

    //lineChartView.setVisibleYRangeMaximum(visibleYRangeMaxium, axis: YAxis.AxisDependency.left)

    lineChartView.leftAxis.axisMinimum =  minimum.y
    lineChartView.leftAxis.axisMaximum =  maximum.y
    //lineChartView.rightAxis.axisMinimum =  minimum.y
    //lineChartView.rightAxis.axisMaximum =  maximum.y


    lineChartView.animate(xAxisDuration: 1, easingOption: .easeInCubic)

    print("LinChartView.data= ", lineChartView.data)
    lineChartView.chartDescription?.text = ""
    lineChartView.backgroundColor = .white


    if let dataSets = dataSets {
        for dataSet in dataSets {

            if dataSet.isLineChartViewHighLowEnabled {
                DispatchQueue.main.async {
                    self.drawLineChartValueView(lineChartView, dataEntry: maximum)
                    self.drawLineChartValueView(lineChartView, dataEntry: minimum)
                }
            }
        }
    }

    lineChartView.data = chartData

    return lineChartView
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 02:10:39

我不认为您将数据集axisDependency设置为右轴。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42090783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档