【问题标题】:Qt: QPolarChart with categorial angular axisQt:具有分类角轴的极坐标图
【发布时间】:2018-04-24 11:04:06
【问题描述】:

我想将 QPolarChart 中角轴的度数替换为 附图中显示的一些文本(例如,而不是 90.0 ->“Cat 1”)。 我尝试了 QCategoryAxis,但在这种情况下,类别出现在轴之间(例如 90 到 180 度之间)。

现在我使用以下代码来创建极坐标图:

QPolarChart *chart = new QPolarChart();

QValueAxis *angularAxis = new QValueAxis();
angularAxis->setRange(0, 360);

QLineSeries *series1 = new QLineSeries();
series1->append(0, 60);
series1->append(90, -60);
series1->append(180, 50);
series1->append(270, 62);
series1->append(360, 60);

QLineSeries *series2 = new QLineSeries();
series2->append(0, 0);
series2->append(90, 0);
series2->append(180, 0);
series2->append(270, 0);
series2->append(360, 0);

chart->addSeries(series1);
chart->addSeries(series2);
chart->addAxis(angularAxis, QPolarChart::PolarOrientationAngular);

ValueAxis *radialAxis = new QValueAxis();
radialAxis->setTickCount(9);
radialAxis->setLabelFormat("%d");
chart->addAxis(radialAxis, QPolarChart::PolarOrientationRadial);

series1->attachAxis(radialAxis);
series1->attachAxis(angularAxis);
series2->attachAxis(radialAxis);
series2->attachAxis(angularAxis);

radialAxis->setRange(-100, 100);

QChartView *chartView = new QChartView();
chartView->setChart(chart);
chartView->setRenderHint(QPainter::Antialiasing);

ui->mainPlot->addWidget(chartView);

【问题讨论】:

    标签: c++ qt qt5 qchart qchartview


    【解决方案1】:

    解决方案是使用QCategoryAxis,但在QCategoryAxis::AxisLabelsPositionOnValue 中使用labelsPosition

    #include <QApplication>
    
    #include <QtCharts>
    using namespace QtCharts;
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QPolarChart *chart = new QPolarChart();
    
        QCategoryAxis *angularAxis = new QCategoryAxis;
        angularAxis->setLabelsPosition(QCategoryAxis::AxisLabelsPositionOnValue);
        angularAxis->setRange(0, 360);
        angularAxis->append("Cat 1", 90);
    
        QLineSeries *series1 = new QLineSeries();
        *series1 << QPointF(0, 60) << QPointF(90, -60) << QPointF(180, 50) << QPointF(270, 62) << QPointF(360, 60);
    
        QLineSeries *series2 = new QLineSeries();
        *series2 << QPointF(0, 0)<< QPointF(90, 0) << QPointF(180, 0) << QPointF(270, 0) << QPointF(360, 0);
    
        chart->addSeries(series1);
        chart->addSeries(series2);
        chart->addAxis(angularAxis, QPolarChart::PolarOrientationAngular);
    
        QValueAxis *radialAxis = new QValueAxis();
        radialAxis->setTickCount(9);
        radialAxis->setLabelFormat("%d");
        chart->addAxis(radialAxis, QPolarChart::PolarOrientationRadial);
    
        series1->attachAxis(radialAxis);
        series1->attachAxis(angularAxis);
        series2->attachAxis(radialAxis);
        series2->attachAxis(angularAxis);
    
        radialAxis->setRange(-100, 100);
    
        QChartView *chartView = new QChartView();
        chartView->setChart(chart);
        chartView->setRenderHint(QPainter::Antialiasing);
    
        chartView->show();
    
        return a.exec();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 2014-05-15
      相关资源
      最近更新 更多