Qwt-QwtPlot类详解

news2024/12/26 23:43:24

1.概述

QwtPlot类是Qwt库中最重要的类之一,用于创建和管理绘图窗口。

QwtPlot类具有以下主要功能:

  • 提供一个绘图窗口,可以在其中绘制简单或复杂的二维数据图。
  • 支持多种类型的图表,包括曲线图、柱状图、散点图等。
  • 能够自定义图表的外观,包括线条颜色、填充颜色、图例等。
  • 支持坐标轴的自定义,包括坐标轴标签、刻度间隔、刻度线风格等。
  • 提供交互式功能,如放大、缩小、拖动等。
  • 支持多个图层,可以在同一个绘图窗口中叠加绘制不同的图表。
  • 支持导出图表为图片文件。 使用QwtPlot类,可以轻松地创建和管理绘图窗口,并将数据以图表的形式进行可视化展示。通过QwtPlot类提供的丰富功能,用户可以灵活地配置图表的样式和外观,以满足自己的需求。无论是简单的曲线图还是复杂的多图层图表,QwtPlot类都能提供强大的功能和易用的接口。

2.常用接口介绍

2.1设置标题

void setTitle (const QString &)

2.2设置绘图窗口的背景色

void setCanvasBackground (const QBrush &)

2.3插入一个图例,并指定其位置

void insertLegend (QwtAbstractLegend *, LegendPosition=QwtPlot::RightLegend, double ratio=-1.0)

2.4设置坐标轴的标题

void setAxisTitle (QwtAxisId, const QString &)

2.5设置坐标轴的刻度范围和步长

void setAxisScale (QwtAxisId, double min, double max, double stepSize=0)

2.6启用或禁用坐标轴自动缩放

void setAxisAutoScale (QwtAxisId, bool on=true)

2.7设置坐标轴的最大次刻度线数

void setAxisMaxMinor (QwtAxisId, int maxMinor)

2.8设置坐标轴的最大主刻度线数

void setAxisMaxMajor (QwtAxisId, int maxMajor)

2.9返回绘图窗口的布局管理器,可以通过该方法来访问和操作图表中的特定元素

QwtPlotLayout * plotLayout ()

2.10重新绘制绘图窗口,用于更新图表显示

virtual void replot ()

2.11返回图例

QwtAbstractLegend * legend ()

3.代码示例

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qwt_plot.h"
#include "qwt_plot_curve.h"
#include "qwt_text.h"
#include "qwt_legend.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QwtPlot *plot = new QwtPlot(QwtText("Two Curves"),this);
    //设置背景色
    plot->setCanvasBackground(QBrush(QColor(Qt::yellow)));

    //添加图例
    QwtLegend *legend = new QwtLegend();
    plot->insertLegend(legend);

    //设置坐标轴标题
    plot->setAxisTitle(QwtAxis::YLeft,QwtText("Y坐标轴"));
    plot->setAxisTitle(QwtAxis::XBottom,QwtText("X坐标轴"));
    plot->setAxisScale(QwtAxis::YLeft, 0, 10);//设置左Y轴范围

    // add curves1
    QwtPlotCurve *curve1 = new QwtPlotCurve( "Curve 1" );
    curve1->setRenderHint( QwtPlotItem::RenderAntialiased );
    curve1->setPen( Qt::red );
    curve1->setLegendAttribute( QwtPlotCurve::LegendShowLine );
    curve1->setYAxis( QwtAxis::YLeft );
    curve1->attach( plot );

    // add curves2
    QwtPlotCurve *curve2 = new QwtPlotCurve( "Curve 2" );
    curve2->setRenderHint( QwtPlotItem::RenderAntialiased );
    curve2->setPen( Qt::black );
    curve2->setLegendAttribute( QwtPlotCurve::LegendShowLine );
    curve2->setYAxis( QwtAxis::YRight );
    curve2->attach( plot );

    //设置数据
    QPolygonF points;
    points << QPointF( 0.0, 4.4 ) << QPointF( 1.0, 3.0 )
           << QPointF( 2.0, 4.5 ) << QPointF( 3.0, 6.8 )
           << QPointF( 4.0, 7.9 ) << QPointF( 5.0, 7.1 );
    curve1->setSamples(points);

    QPolygonF points2;
    points2 << QPointF( 0.0, 4.6 ) << QPointF( 1.0, 3.2 )
           << QPointF( 2.0, 4.7 ) << QPointF( 3.0, 7.0 )
           << QPointF( 4.0, 8.1 ) << QPointF( 5.0, 7.3 );
    curve2->setSamples(points2);

    // finally, refresh the plot
    plot->replot();

    ui->verticalLayout->addWidget(plot);
}

MainWindow::~MainWindow()
{
    delete ui;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1128922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一章: LangChain 生成与加载知识库并根据匹配内容回答问题

LangChain——让文本大模型更加智能化系列文章目录 第一章 langchain生成与加载向量库并根据匹配内容回答问题 文章目录 LangChain——让文本大模型更加智能化系列文章目录前言文章简介一、使用步骤1.引入库2.LLM加载3.数据加载4.数据切分与转换向量5.构建prompt5.查询知识库并…

进程的优先级与LAMP项目部署实战

一、进程的优先级&#xff08;扩展&#xff09; 1、什么是进程的优先级 Linux是一个多用户、多任务的操作系统&#xff0c;系统中通常运行着非常多的进程。哪些进程先运行&#xff0c;哪些进程后运行&#xff0c;就由进程优先级来控制 思考&#xff1a;什么时候需要用到进程…

线性表操作的实现--顺序表

本文参考朱战力老师的数据结构与算法--使用C语言一书 文章目录 前言 一、线性表是什么&#xff1f; 二、具体实现 1.顺序表的定义 2.初始化ListInitiate&#xff08;L&#xff09; 3.求当前元素个数ListLength&#xff08;L&#xff09; 4.插入元素ListInsert&#xff08;L&…

js 导出文字到txt文件

简介&#xff1a; js 导出文字到txt文件 效果展示&#xff1a; 代码示例&#xff1a; /*** 导出文字到txt文件* param filename* param text*/ function exportToTxt(filename, text) {if (filename undefined) {filename "example-";}if (text undefined) {tex…

【IDEA配置】IDEA配置

参考视频&#xff1a;【idea必知必会】优化设置 告别卡顿 1. 显示内存 右击底下空白区域&#xff0c;出现memory indicator内存指示器&#xff0c;点击勾选即可显示。有的是在Settings->Appearance->Window Options里&#xff0c;如图所示&#xff1a; 2. 内存设置 …

傻瓜式调用阿里云的接口进行三要素(姓名、手机号和身份证号)校验

傻瓜式调用阿里云的接口进行三要素&#xff08;姓名、手机号和身份证号&#xff09;校验 一、准备1、购买阿里云的三要素核验套餐包2、申请开通三要素一致性核验3、查看AccessKey 二、调用三要素核验接口1、查看接口文档2、查看阿里云的调用示例3、阿里云完整示例代码4、改造后…

高级深入--day39

(实战项目三)新浪网分类资讯爬虫 爬取新浪网导航页所有下所有大类、小类、小类里的子链接&#xff0c;以及子链接页面的新闻内容。 效果演示图&#xff1a; items.py import scrapy import sys reload(sys) sys.setdefaultencoding("utf-8")class SinaItem(scrapy.I…

STM32Cube高效开发教程<基础篇>(七)----基础定时器

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。    本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。 一、 概述 STM…

new Vue() 发生了什么?

目录 前言 用法 代码和效果图 效果图 理解 高质量的使用 前言 Vue.js是一个流行的JavaScript前端框架&#xff0c;用于构建单页面应用&#xff08;SPA&#xff09;和用户界面。当我们使用new Vue()来创建一个Vue实例时&#xff0c;Vue会执行一系列的初始化过程&#xff0…

Tomcat 和 HTTP 协议

目 录 HTTP 协议HTTP 是什么理解 HTTP 协议的工作过程抓包结果HTTP请求HTTP响应 HTTP 请求 (Request)认识 URL认识 "方法" (method)认识请求 "报头"&#xff08;header&#xff09;认识请求 "正文" (body) HTTP 响应认识 "状态码" (st…

NFS性能瓶颈分析

前言 atop – run it with -d option or press d to toggle the disk stats view. iostat – try it with the -xm 2 options for extended statistics, in megabytes, and in two-second intervals. iotop – top-like I/O monitor. Try it with the -oPa options to show the…

Redis数据类型——list类型数据的扩展操作

1.list阻塞式数据获取 2.list类型数据业务场景

基于蜻蜓算法的无人机航迹规划-附代码

基于蜻蜓算法的无人机航迹规划 文章目录 基于蜻蜓算法的无人机航迹规划1.蜻蜓搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用蜻蜓算法来优化无人机航迹规划。 1.蜻蜓搜索算法 …

华盛顿特区选举委员会:黑客可能已侵入整个选民名册

导语 近日&#xff0c;华盛顿特区选举委员会&#xff08;DCBOE&#xff09;传来了一条令人担忧的消息&#xff1a;黑客可能已经侵入了整个选民名册。这一事件引发了公众的广泛关注和担忧。本文将为大家详细介绍这一事件的经过以及可能带来的后果&#xff0c;并探讨选民数据的保…

KekeBlog项目实战后台模块(二)(已完结)

十一、后台模块-菜单列表 菜单指的是权限菜单&#xff0c;也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表&#xff0c;不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…

Python与Appium实现手机APP自动化测试的示例代码

本文主要介绍了Python与Appium实现手机APP自动化测试的示例代码&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下 1.什么是Appium appium是一个开源的测试自动化框架&#xff0c;可以与原生的、混合的和移…

借助文心大模型4.0轻松搞定中文语境,生成技术视频十分强悍,并能自主添加各种方言!

在10月17日的百度世界2023上&#xff0c;文心大模型4.0版本正式发布&#xff01;百度直接放话&#xff1a;文心大模型4.0是目前最强大的文心大模型。会上百度董事长李彦宏为我们展示了文心大模型4.0在搜索、地图、商业智能、智能会议、智能视频、多轮对话方面的强悍。那文心大模…

【vue3+ts】@设置别名

新建的vue3ts项目&#xff0c;建路由的时候报错&#xff1a; 在vite.config.ts中新增如下代码&#xff1a; import { defineConfig } from vite import vue from vitejs/plugin-vue import path from "path" // https://vitejs.dev/config/ export default defineC…

1990-2021年上市公司债务融资成本数据(原始数据+stata处理代码+计算结果)

1990-2021年上市公司债务融资成本数据&#xff08;原始数据处理代码计算结果&#xff09; 1、时间&#xff1a;1990-2021年 2、来源&#xff1a;上市公司年报 3、指标&#xff1a;编码、年份、证券代码、短期借款、长期借款、应付债券、长期应付款、负债合计、行业代码、财务…

实现基于 Jenkins 的多服务器打包方案

实现基于 Jenkins 的多服务器打包方案 在实际项目中&#xff0c;我们经常会遇到需要将一个应用程序或服务部署到不同的服务器上的需求。而使用 Jenkins 可以很方便地自动化这个过程。 设置参数 首先&#xff0c;我们需要设置一些参数&#xff0c;以便在构建过程中指定要部署…