Проблема с прокруткой диаграммы вместо масштабирования всей диаграммы, чтобы она поместилась в пространстве - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь использовать Библиотека диаграмм Даниэля Джинди , и я хочу, чтобы гистограмма или линейный график отображали только часть данных, но позволяли пользователю прокручивать вправо досм. остальные данные.

Прямо сейчас на диаграмме показаны ВСЕ данные внутри представления, поэтому столбцы слишком малы или невидимы, и если в начале графика были только точки данных,линейный график сокращен, так что вы не можете видеть данные.

Я попытался установить xAxis.axisMaximum на определенное значение, и это лучше отображает данные, но затем вы не можете прокрутить вправо, чтобы увидетьостальная часть графика.Я хочу и то и другое: видеть данные в разумном размере и иметь возможность прокручивать вправо, чтобы увидеть остальную часть диаграммы, если она нужна диаграмме, что часто бывает с моим программным обеспечением.

Здесьмой код гистограммы и линейчатой ​​диаграммы:

override func makeChart(resultChoice: chartData)
{
    let chart = getChartObject() as! BarLineChartViewBase
    chart.autoScaleMinMaxEnabled = true // I've tried this as false //!chart.autoScaleMinMaxEnabled
    chart.chartDescription?.enabled = false
    chart.drawGridBackgroundEnabled = false
    chart.dragEnabled = true
    chart.setScaleEnabled(true) //I've tried setting this to false
    chart.pinchZoomEnabled = true
    chart.leftAxis.axisMinimum = getAxisMinimum()
    chart.leftAxis.axisMaximum = getAxisMaximum()

    chart.clipValuesToContentEnabled = false
    let xAxis = chart.xAxis
    xAxis.avoidFirstLastClippingEnabled = true
    xAxis.labelPosition = XAxis.LabelPosition.bottom
    chart.rightAxis.enabled = false
    xAxis.drawGridLinesEnabled = false
    xAxis.drawAxisLineEnabled = true
    xAxis.granularity = 1.0
    xAxis.labelFont = MyVariables.chartFont!
    //xAxis.axisMinimum = 0
    //xAxis.axisMaximum = 30

    //xAxis.setValuesForKeys(<#T##keyedValues: [String : Any]##[String : Any]#>)
    yAxis = chart.leftAxis
    yAxis.labelFont = MyVariables.chartFont!
    chart.rightAxis.enabled = false
    chart.legend.enabled = true
    yAxis.granularity = 1.0
    yAxis.drawGridLinesEnabled = false
    //var counter = 1.0
    var myEntries : [ChartDataEntry] = []

    var myXValues : [String] = []


    if !resultChoice.plotPoints.isEmpty
    {
        startDate = resultChoice.plotPoints[0].xValue
        for item in resultChoice.plotPoints
        {
            /*let timeString : String =
                {
                    let formatter = DateFormatter()
                    formatter.dateFormat = "h:mm a"
                    formatter.amSymbol = "AM"
                    formatter.pmSymbol = "PM"
                    return formatter.string(from: item.xValue)
            }()
            myXValues.append(timeString)*/
            /*if(item.showXValue)
             {
             myXValues.append(timeString)
             }
             else
             {
             myXValues.append("")
             }*/
            let myEntry = getChartDataEntry(xval: item.xValue.timeIntervalSince(startDate), yval: Double(item.yValue))
            getColors(value: myEntry.y)

            //counter += 1
            myEntries.append(myEntry)

        }
        let myFormatter = MyXAxisValueFormatter(_startDate: startDate)

        xAxis.valueFormatter = myFormatter
        setYAxisFormatter()
        createSet(myEntries: myEntries)

    }

}

А вот код только моей гистограммы, чтобы показать, что я установил ширину бара:

override func createSet(myEntries: [ChartDataEntry])
{
    let chart = getChartObject() as! BarChartView
    let mySet = BarChartDataSet(values: myEntries, label: "Time Elapsing")
    mySet.colors = myColors
    mySet.valueColors = myColors
    mySet.valueFont = MyVariables.chartFont!
    setValueFormatter(set: mySet)

    let myBarChartData = BarChartData(dataSet: mySet)
    myBarChartData.barWidth = 0.8
    chart.data = myBarChartData
}

Кроме того, я должен отметитьчто, по словам моего делового партнера, программное обеспечение вело себя так, как я сейчас пытаюсь заставить его вести себя.Я не помню этого, но тот факт, что он считает, что раньше все работало правильно, заставляет меня думать, что я, должно быть, изменил настройку, вызвавшую проблему.Кроме того, недавно я перешел от добавления диаграммы полностью программно к добавлению диаграммы в качестве подпредставления другого представления, которое было добавлено через конструктор интерфейса.Я не думаю, что это должно иметь значение для этой проблемы, хотя.Кроме того, причина, по которой моему бизнес-партнеру понравилось то, как данные отображались раньше, может быть не в изменении настроек.Я недавно изменил ось X, чтобы время отображалось равномерно.Это изменение было необходимо, или было бы трудно узнать, когда произошло событие, отображаемое на диаграмме.

1 Ответ

0 голосов
/ 18 мая 2018

Я решил проблему, позвонив

chart.setVisibleXRangeMaximum(30)

ПОСЛЕ того, как данные были установлены, и вызвав

chart.scaleYEnabled = false & chart.scaleXEnabled = true

когда я устанавливаю другие настройки графика.

...