Search code examples
qtqmlqtquick2qchart

ChartView not showing BarSets data


in qml, i create a ChartView:

ChartView {
        id : mChart
        title: "Bash History Graph"
        anchors.fill: parent
        legend.alignment: Qt.AlignBottom
        antialiasing: true
        animationOptions: ChartView.SeriesAnimations
}

and in Component.onCompleted signal:

Component.onCompleted: {
            var mHorSeries = Qt.createQmlObject('import QtCharts 2.2; HorizontalBarSeries {}', mChart);
            var categoryAxisY=Qt.createQmlObject('import QtCharts 2.2;BarCategoryAxis {}',mChart);
            var mBarSet = Qt.createQmlObject('import QtCharts 2.2; BarSet{}',mHorSeries);

            categoryAxisY.categories = ["2007", "2008", "2009", "2010"];
            mHorSeries.append("commands", [2, 2, 3, 4, 5, 6]);
            mChart.setAxisY(categoryAxisY, mHorSeries);
}

this is the output. this is the output

any idea to fix the issue? thanks.


Solution

  • A simple option to create series is to use createSeries(), then we add the axisY and the other properties:

    ChartView {
        id : mChart
        title: "Bash History Graph"
        anchors.fill: parent
        antialiasing: true
        animationOptions: ChartView.SeriesAnimations
        legend.alignment: Qt.AlignBottom
    
        Component.onCompleted: {
            var mHorSeries = mChart.createSeries(ChartView.SeriesTypeHorizontalBar)
    
            var categoryAxisY=Qt.createQmlObject('import QtCharts 2.2;BarCategoryAxis {}',mChart);
            mHorSeries.axisY = categoryAxisY
    
            categoryAxisY.categories = ["2007", "2008", "2009", "2010", "2011", "2012" ]
    
            var mBarSet = mHorSeries.append("commands", [2, 2, 3, 4, 5, 6])
    
            mChart.axisX(mHorSeries).min= 0 //Math.min.apply(null, mBarSet.values)
            mChart.axisX(mHorSeries).max= 10 //Math.max.apply(null, mBarSet.values)
        }
    }
    

    enter image description here