QCustomPlot 瀑布图色度条

2023-11-01 00:52
文章标签 瀑布 qcustomplot 色度

本文主要是介绍QCustomPlot 瀑布图色度条,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、单独应用在一个QWidget中。

通过新建一个瀑布图后移除瀑布图即可只留住色度条。

    QCustomPlot *customPlot = ui->widget;QCPColorScale *colorScale = new QCPColorScale(customPlot);customPlot->plotLayout()->addElement(0, 1, colorScale); // add it to the right of the main axis rectcolorScale->setType(QCPAxis::atRight); // scale shall be vertical bar with tick/axis labels right (actually atRight is already the default)
//    colorScale->axis()->setLabel("Magnetic Field Strength");colorScale->setGradient(QCPColorGradient::gpJet);colorScale->setDataRange(QCPRange(0,1));customPlot->plotLayout()->remove(customPlot->axisRect());customPlot->replot();

运行后
在这里插入图片描述

2、将瀑布图色度条移动至瀑布图内。

先上代码

if(nullptr == m_pColorScale){m_pColorScale = new QCPColorScale(fp3);m_pColorScale->setDataRange(QCPRange(0,50));//百分比m_pColorScale->setType(QCPAxis::atBottom);
//        m_pColorScale->axis()->setOffset(-18);m_pColorScale->axis()->setVisible(true);m_pColorScale->axis()->setTickLength(5,0);m_pColorScale->axis()->setSubTickLength(0,0);QFont font;font.setFamily(QStringLiteral("黑体"));font.setBold(true);m_pColorScale->axis()->setTickLabelFont(font);m_pColorScale->axis()->setNumberFormat("gbc");//g灵活的格式,b漂亮的指数形式,c乘号改成×m_pColorScale->axis()->setNumberPrecision(2);//精度1m_pColorScale->axis()->ticker()->setTickCount(4);m_pColorScale->axis()->ticker()->setTickStepStrategy(QCPAxisTicker::tssMeetTickCount);m_pColorScale->setRangeDrag(true);m_pColorScale->setRangeZoom(true);fp3->axisRect()->insetLayout()->addElement(m_pColorScale,QRectF(0,0.95,1,1));m_pColorMap->setColorScale(m_pColorScale);}

重点是最后这一句

fp3->axisRect()->insetLayout()->addElement(m_pColorScale,QRectF(0,0.95,1,1));

这句话的作用是将色度条放入瀑布图框中。效果图如图。
在这里插入图片描述

原理解析:

首先应该参考我的另一篇文章介绍了QCustomPlot 的刷新原理。

1、色度条的深度理解
可以把它看成一个QCPAxisRect (矩形框)和一张底色图的结合体。官方采用的是QCPColorScaleAxisRectPrivate这个类,通过调用这个类的draw 函数进行刷新底色值及矩形框。色度条上的数值可以看成矩形框的x轴数值,色度条的边框可以看成是矩形框的坐标轴。通过下列代码可以获取到坐标轴,开发者就是这么设计的。

m_pColorScale->axis()->axisRect()->axis(QCPAxis::atRight)->setBasePen(QPen(Qt::white, 2));m_pColorScale->axis()->axisRect()->axis(QCPAxis::atLeft)->setBasePen(QPen(Qt::white, 2));m_pColorScale->axis()->axisRect()->axis(QCPAxis::atTop)->setBasePen(QPen(Qt::white, 2));

2、矩形框的深度理解(QCPAxisRect)
在这里插入图片描述
矩形框中包含一个QCPLegend,这个legend 是怎么画到矩形框中的呢,通过查看源码

 legend = new QCPLegend;legend->setVisible(false);defaultAxisRect->insetLayout()->addElement(legend, Qt::AlignRight|Qt::AlignTop);defaultAxisRect->insetLayout()->setMargins(QMargins(12, 12, 12, 12));

是通过一个insetLayout 添加上去的,QCustomer中的元素都是在布局中存在的,为了放置一个legend,一个QCPAxisRect默认带一个QCPLayoutInset,这个布局默认是为了放置图例,这里我们可以在这个布局上添加一个色度条。

这篇关于QCustomPlot 瀑布图色度条的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/319325

相关文章

CSS总结——瀑布流布局

瀑布流布局 瀑布流布局是一种新型的布局方式,可以将大小不一的图片完整的显示在页面上,并且在杂乱的布局中保持着一定的美感,今天学习了一下如何使用瀑布流布局,总结了有以下三种方式。(瀑布流还可以使用grid布局实现,还没有学习过这种方式) <div class="container" id="con"><div class="item"><img src="../img/1.jpeg" alt

Flutter最酷炫瀑布流实现

背景 公司APP首页列表有此需求 使用哪些组件 StaggeredGridView.countBuilder 如何实现,难点在哪里 瀑布流的宽度与高度。 宽度=(屏幕宽—组件间隙) / 2 高度=图片高度进行设置 这样才能实现并展示瀑布流的效果 在pubspec.yaml 文件 添加 flutter_staggered_grid_view: ^0.4.1 flutter_s

CSS瀑布流实现

文章目录 前言前置知识 React 中实现代码实现 Vue 中实现代码实现 前言 瀑布流是一种CSS布局技术,它允许不同高度的元素在页面上以美观的方式排列,同时保持行与列间的间距一致。 前置知识 使用 multi-column 实现多列布局 column-count: 设置布局显示的列数。column-gap: 定义列与列之间的间距。column-rule: 设置列与列

Qt6中使用qcustomplot时报错:file too big

错误描述:在qt6中使用qcustomplot时报错提示:file too big 提示是.cpp文件太大导致的,需要在.pro文件中再增加一行 QMAKE_CXXFLAGS += "-Wa,-mbig-obj"修改编译器的设置

Qt QCustomPlot画色阶图

工作中用到QCustomPlot画曲线图和色阶图,并且在色阶图上添加文字,圆圈或者几条线段画一些图形,这里写个简单的例子把这几个功能记录一下,代码在这里:  https://download.csdn.net/download/Sakuya__/89681279https://download.csdn.net/download/Sakuya__/89681279

Hexo Next 博客添加相册瀑布流

原文:https://rebootcat.com/2020/09/19/nextphotowall/ 前言 一直没有时间来整理下博客搭建的一些事情,现在补上一篇,给 Hexo Next 博客添加一个相册功能,使用瀑布流的方式。 原理说明 使用 github 作为仓库存储图片文件(图床)使用 jsdelivr 进行图片 CDN 加速 优点 此种方式的优点是免费,不需要购买其他的对

ios瀑布流

大家知道现在网上流行的瀑布流,是根据一个外国的网站得来的。能够大量展现信息的方式。可以用UIScrollView来实现但是想来想去比较麻烦,这个经常用来展现图片,最好用uitableview的重用机制,这个是官方自己实现好的。所以越简单越好。 1. 总先做成几列是事先要清楚,有多少条记录,这个可以从json或者xml中读取后知道(json或xml最好将图片的高度和宽度也显示出来,便于后面用到

qt的QCustomPlot绘制实时曲线图总结

一、组件的下载 下载下来后文件如下图所示,具有丰富的例程,这个很好,注意后面要用到的c++文件和头文件,听说还有丰富的帮助文档,暂时没有时间去找,大概翻看了一下没有看到 二、拷贝.h 和c++文件到工程目录,如下图;并添加到工程目录中 三、在ui窗口中增加一个QCustomPlot绘图对象,可以用对象提升的办法 四、修改主窗口的头文件,主要增加了起始时间,一个定时器和一个绘图的槽函

在iOS上实现瀑布流界面

转自:http://blog.csdn.net/jasonblog/article/details/7588532 前阵子需要做一个需求,在iPhone上实现瀑布流效果。 第一眼看到这个需求,我想到的两种解决方案分别是: 1. 使用多个UITableView,然后控制它们同时滚动;  2. 使用一个UIScrollView,然后参考UITableView的实现自己做一个符

【QT】qcustomplot的清除图层里表数据的方法,及错误分析

题记:ui.qcp->graph(0)->data().data()->clear();有用 ui.qcp->graph(0)->data()->clear();,无用,且软件不会报错! 更详细地讨论 QCustomPlot 中的数据清除方法。 QCPGraph::data() 返回一个 QSharedPointer<QCPGraphDataContainer>,该容器提供了对图表数据的访问。