QCustomplot极坐标系绘制
一、在最新的QCustomplot2.1.0版本介绍中已经说明增加了极坐标的绘图功能,相关网络上查找使用的人很少也没有先关的资料,自己深入研究了一下,因为之前的迪卡尔坐标系一直用的这个库,也懒得使用其它库了
二、下载最新的QCustomplot库,官网Qt Plotting Widget QCustomPlot - Download
三、先关代码
private:QCPPolarAxisRadial *radialAxis=nullptr;QCPPolarAxisAngular *angularAxis=nullptr;QCPPolarGraph *graph=nullptr;//初始化
void Init()
{QWidget *Wdt1=new QWidget();m_Bar=new QCustomPlot(Wdt1);m_Bar->setMaximumWidth(300);hLayout->addWidget(m_Bar);QFont font;font.setStyleStrategy (QFont::NoAntialias);font.setFamily("Microsoft YaHei");font.setPixelSize(10);//极坐标m_Bar->plotLayout()->clear(); // 清空默认布局angularAxis = new QCPPolarAxisAngular(m_Bar);m_Bar->plotLayout()->addElement(0, 0, angularAxis); // 将角度轴添加到布局中心// 3. 创建径向轴 (从中心向外)radialAxis = angularAxis->radialAxis();angularAxis->setTickLabelFont(font);angularAxis->setLabel(tr("角度轴 (θ)"));angularAxis->setRange(0, 360); // 角度范围 (0-360度)angularAxis->grid()->setVisible(true);angularAxis->setTicks(true);radialAxis->setLabel(tr("径向轴 (r)"));radialAxis->setAngle(0);radialAxis->setSubTicks(true);radialAxis->setTickLabelFont(font);graph = new QCPPolarGraph(angularAxis, radialAxis);// 8. 设置图形样式 (可选)graph->setLineStyle(QCPPolarGraph::lsLine); // 线型graph->setScatterStyle(QCPScatterStyle::ssDot); // 散点样式graph->setPen(QPen(Qt::blue, 1)); // 线宽和颜色graph->setBrush(QBrush(QColor(0,0,250,150)));}
//数据更新
void UpPlot(){QVector<double> regenData;QVector<double> angle;double maxData=0.0;for (int i=0;i<36;i++){regenData << i;//测试值angle.append(i*10);if(maxData<Config::getInstance()->CycleForce[i])maxData=Config::getInstance()->CycleForce[i];}graph->setData(angle, regenData);radialAxis->setRange(0, maxData);m_Bar->replot();}
测试图像