利用Hellocharts绘制频谱瀑布图(雨图)

本文介绍如何在Android应用中使用Hellocharts库来绘制频谱瀑布图,这种图表常用于观察信号随时间变化的情况。通过修改Hellocharts的ColumnActivity示例,实现了条形图流动效果,提供了一种实现瀑布图的解决方案,并展示了实际运行效果。
摘要由CSDN通过智能技术生成

频谱瀑布图是众多频谱仪器上非常普遍的一种图,对于观察一段时间内信号的变化是非常突出的。因此在android上绘制2纬的瀑布图也是我们项目不可或缺的一部分。下面就一个小demo与大家分享。


  经过多次对比,以及查看API文档,最终选择了hellocharts作为所依赖的图库,这个图库一直在github上更新。首先我将瀑布图设想为一层层的带有颜色的小块块向上堆叠的效果,而小块块颜色是与频谱值一一对应,能够实现这种画图的毫无疑问是选择条形图,而且是stackedBar.


在hellocharts的源码实例中,有一个ColumnActivity,其中就有stacked的实现样例,我就是在这个基础上,实现条形图流动起来。话不多说,直接上代码上图吧


demo效果图:




实际设备达到效果,由于不知道如何将手机截图做成gif,,又不想录视频再转成gif,因此将之前从仪器上的的瀑布图录下来的gif作为最终效果,实际接入信号手机上的效果也差不多:

  某设备gif图:



手机接入信号:




代码:

package com.example.administrator.ddd;

import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
im
当然,下面是一个使用QCustomPlot库绘制频谱瀑布图的简单程序案例: ```cpp #include <QApplication> #include <QMainWindow> #include "qcustomplot.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QMainWindow mainWindow; QCustomPlot customPlot(&mainWindow); // 设置图表标题 customPlot.plotLayout()->insertRow(0); customPlot.plotLayout()->addElement(0, 0, new QCPTextElement(&customPlot, "频谱瀑布图", QFont("sans", 12, QFont::Bold))); // 设置坐标轴标签 customPlot.xAxis->setLabel("时间"); customPlot.yAxis->setLabel("频率"); customPlot.zAxis->setLabel("幅度"); // 设置坐标轴范围 customPlot.xAxis->setRange(0, 100); customPlot.yAxis->setRange(0, 100); customPlot.zAxis->setRange(0, 100); // 创建频谱瀑布图数据 const int numPoints = 100; QVector<double> x(numPoints), y(numPoints), z(numPoints); for (int i = 0; i < numPoints; ++i) { x[i] = i; y[i] = i * i; z[i] = i * i * i; } // 添加频谱瀑布图数据 QCPColorMap *colorMap = new QCPColorMap(customPlot.xAxis, customPlot.yAxis); colorMap->setData(x, y, z); colorMap->setGradient(QCPColorGradient::gpPolar); colorMap->rescaleDataRange(); // 设置图例 QCPColorScale *colorScale = new QCPColorScale(&customPlot); customPlot.plotLayout()->addElement(0, 1, colorScale); colorScale->setDataRange(colorMap->dataRange()); colorMap->setColorScale(colorScale); // 刷新图表 customPlot.replot(); mainWindow.setCentralWidget(&customPlot); mainWindow.resize(800, 600); mainWindow.show(); return a.exec(); } ``` 这个程序将创建一个带有频谱瀑布图的窗口,并使用QCustomPlot库来绘制图表。你可以根据自己的需求进行修改和调整。记得在编译和链接时添加QCustomPlot库的相关依赖。 希望这个例子对你有所帮助!如果有任何问题,请随时提问。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值