Qt绘制简单的风向玫瑰图代码

本文详细介绍如何使用QPainter在子widget上绘制风向玫瑰图,包括设置字体、绘制同心圆、X轴和Y轴、标注方向及绘制弧形等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、绘制简单的风向玫瑰图代码

2、主要使用QPainter

3、在子widget上绘制需要使用widget监视事件 eventfilter update();//更新界面

//镜头12
        QPainter painter1(WindRose12)/**/;
        painter1.begin(WindRose12);
        painter1.setFont(QFont("宋体"));
        painter1.translate(WindRose12->width() >> 1, WindRose12->height() >> 1);
        painter1.setRenderHint(QPainter::Antialiasing,true);
        //画同心圆
        painter1.setPen(QPen(Qt::black,2,Qt::DashDotDotLine));
        painter1.drawEllipse(-radius, -radius, radius << 1, radius << 1);
        painter1.drawEllipse(-(radius-20), -(radius-20), (radius-20) << 1, (radius-20) << 1);
        painter1.drawEllipse(-(radius-40), -(radius-40), (radius-40) << 1, (radius-40) << 1);
        painter1.drawEllipse(-(radius-60), -(radius-60), (radius-60) << 1, (radius-60) << 1);
        //画X轴和Y轴
        painter1.drawLine(QPoint(-radius,-radius>>8),QPoint(radius,-radius>>8));
        painter1.drawLine(QPoint(-radius>>8,-radius),QPoint(-radius>>8,radius));
        //标注方向
        painter1.setFont(QFont("Times", 20, QFont::Bold));
        painter1.drawText(QPoint(-radius>>8,-radius-offset-offset),"Camera12");
        painter1.drawText(QPoint(-radius>>8,-radius-offset),"N");
        painter1.drawText(QPoint(-radius>>8,radius+offset),"S");
        painter1.drawText(QPoint(-radius-offset,-radius>>8),"W");
        painter1.drawText(QPoint(radius+offset,-radius>>8),"E");
        //绘制弧形
        //gradientArc(&painter, radius, 0+90,  -(10), 30, qRgb(200, 200, 0));
        for(int i=0;i<angledis1.count();i++)
        {
            gradientArc(&painter1, radius*angledis1[i]/max1, 0+90-i*10,  -(10), 30, qRgb(200, 200, 0));
        }
        painter1.end();

<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>803</width> <height>600</height> </rect> </property> <property name="windowTitle"> <string>天气情况分析</string> </property> <widget class="QWidget" name="centralwidget"> <widget class="QTabWidget" name="tabWidget"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>801</width> <height>551</height> </rect> </property> <property name="styleSheet"> <string notr="true">background-color: qlineargradient(spread:pad, x1:0.484346, y1:1, x2:0.479, y2:0, stop:0 rgba(158, 214, 255, 255), stop:1 rgba(255, 255, 255, 255));</string> </property> <property name="currentIndex"> <number>0</number> </property> <widget class="QWidget" name="tab"> <attribute name="title"> <string>数据预处理</string> </attribute> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> <widget class="QGroupBox" name="groupBox"> <property name="title"> <string>选择与清洗</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QPushButton" name="pushButton"> <property name="text"> <string>选择csv文件</string> </property> </widget> </item> <item> <widget class="QComboBox" name="comboBox"> <item> <property name="text"> <string>数值型列:使用KNNImputer填充缺失值</string> </property> </item> <item> <property name="text"> <string>非数值型列:使用该列的众数填充空值</string> </property> </item> <item> <property name="text"> <string>基于全部列删除重复项:使用drop_duplicates()方法删除所有重复的行</string> </property> </item> <item> <property name="text"> <string>异常值处理:使用IQR(四分位距)方法移除数据集数值型列中的异常值</string> </property> </item> <item> <property name="text"> <string>数据格式化和类型转换:对数值型列进行Min-Max归一化</string> </property> </item> <item> <property name="text"> <string>数据排序:根据索引排序</string> </property> </item> <item> <property name="text"> <string>数据存储:使用to_csv()方法将清洗后的数据存储到一个cleaned.csv文件中</string> </property> </item> </widget> </item> </layout> </widget> </item> <item> <widget class="QTableView" name="tableView"/> </item> </layout> </widget> <widget class="QWidget" name="tab_2"> <attribute name="title"> <string>可视化</string> </attribute> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QGroupBox" name="groupBox_2"> <property name="title"> <string>可视化选项</string> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <widget class="QPushButton" name="pushButton_2"> <property name="text"> <string>温度、气压、湿度随时间变化的折线图</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_3"> <property name="text"> <string>不同站点PM2.5的柱状图</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_4"> <property name="text"> <string>累积降水量·的面积图</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_5"> <property name="text"> <string>各站点颗粒物浓度的散点图</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_6"> <property name="text"> <string>气象玫瑰图</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_7"> <property name="text"> <string>气象和污染物指标的雷达图</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_8"> <property name="text"> <string>箱线图展示数据分布</string> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QGraphicsView" name="graphicsView"/> </item> </layout> </widget> <widget class="QWidget" name="tab_3"> <attribute name="title"> <string>算法建模</string> </attribute> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QGroupBox" name="groupBox_3"> <property name="title"> <string>算法选项</string> </property> <layout class="QVBoxLayout" name="verticalLayout_4"> <item> <widget class="QPushButton" name="pushButton_9"> <property name="text"> <string>线性回归</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_10"> <property name="text"> <string>移动平均</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_11"> <property name="text"> <string>时间序列分解</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_12"> <property name="text"> <string>经典时间序列预测模型</string> </property> </widget> </item> </layout> </widget> </item> <item> <widget class="QGraphicsView" name="graphicsView_2"/> </item> </layout> </widget> </widget> </widget> <widget class="QMenuBar" name="menubar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>803</width> <height>33</height> </rect> </property> </widget> <widget class="QStatusBar" name="statusbar"/> </widget> <resources/> <connections/> </ui> 如果我要用网页实现上述ui文件的功能,怎么写python代码,已知要处理的cav文件有五万多行数据
最新发布
06-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌武贰玖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值