Auto Axes in QML Lineseries Charts



  • Hi

    In line series charts, i was append the c++ data to qml. Herewith add coding for your reference. In that i need to auto adjust the X and Y axes minimum and maximum value based on the received data from c++.

    ChartView {
    
        id: chartView
    
        title: "Real Time Charts"
        anchors.fill: parent
        animationOptions: ChartView.SeriesAnimations
        antialiasing: true
        theme: ChartView.ChartThemeBlueCerulean
    
        ValueAxis {
            id: axisY2
            min: 0
            max: 100
            minorTickCount: 3
            tickCount: 10
    
        }
    
        ValueAxis {
            id: axisX
            min: 0
            max: 50
            minorTickCount: 3
            tickCount: 7
            gridVisible: false
           color: "white"
        }
    
        LineSeries {
            id: lineSeries1
            name: "signal 1"
            axisX: axisX
            axisY: axisY1
    

    For rate changed, i was append the data to the lineseries...

            onRateChanged:  {
    

    lineSeries1.append(currentIndex,rate)

        }
    

    Question?

    Instead of defining X and Y min and max values, i need a solution to adjust min and max values automatically based on the received data.



  • I did something similar to this, but using JavaScript to read my data...

    I have two properties in my main.qml that are my min & max for my axis. I update them via the JavaScript.

    In my QML with the charts, I make sure that the min & max parameters point to the properties in my main.qml.

    main.qml :

    property alias appWin: mainWindow
    property double maxWspd: 0.0
    property double minWspd: 100.0
    

    JavaScript:

    if( appWin.maxWspd < Math.ceil((appWin.wxWspd))+1 ) {
        appWin.maxWspd = Math.ceil((appWin.wxWspd))+1;
    }
    if( appWin.minWspd > Math.floor((appWin.wxWspd))-1 ) {
        appWin.minWspd = Math.floor((appWin.wxWspd))-1;
    }
    

    MyGraphs.qml:

            ValueAxis {
                id: axisYw
                min: appWin.minWspd
                max: appWin.maxWspd
                tickCount: 5
                labelFormat: "%.1f"
                labelsFont:Qt.font({pointSize: 12})
                labelsColor: appWin.baseFontColor
                color: appWin.graphTickColor
            }

Log in to reply