MathGL 绘图库在Linux上的安装和应用
1、简单的说,mathgl是一个高质量的绘图库,支持Linux和Windows操作系统。可以控制台使用,也可以集成到其他程序中,据说速度还可以。
2、开源、目前还在更新。
3、安装,这里以Ubuntu18 为例。Debian操纵一致。
sudo apt install build-essential sudo apt install libmgl-dev
4、验证和使用。
(1)C++的直接调用。过程就是新建CPP文件,输入代码,编译,运行。
#includeint main() { mglGraph gr; gr.Title("MathGL Demo"); gr.SetOrigin(0, 0); gr.SetRanges(0, 10, -2.5, 2.5); gr.FPlot("sin(1.7*2*pi*x) + sin(1.9*2*pi*x)", "r-2"); gr.Axis(); gr.Grid(); gr.WriteFrame("mgl_example.png"); }
运行代码并不会显示窗口,而是在代码目录生成一个名为 mgl_example.png 的图片,打开图片。
(2)Qt中调用。这里仅展示一种方法,老王也还没深入研究。。。
新建Qt基本UI工程,然后修改为以下。
//添加图例
int example(mglGraph *gr) { gr->Rotate(60,40); gr->SetRanges(50,0,0,90,0,50); gr->Axis(); gr->Box(); gr->Grid(); int val; mglPoint a, b; //for(int i = 0; i < 50; i++){ for(int n = 0; n < 90;n++){ val = rand()%15; a.Set(i,n,0); b.Set(i,n,val); if(val < 10){ gr->Line(a,b,"b3",1); } if(val >= 10 && val <= 25){ gr->Line(a,b,"g3",1); } if(val >25){ gr->Line(a,b,"r3",1); } } //} i += 1; if(i > 50) i = 0; }
//设置绘图
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); qgr = new QMathGL(ui->widget); //指定继承 qgr->setDraw(example); // 设置绘图,传入函数作为参数 qgr->adjust(); // 自适应绘图 qgr->setZoom(true); // qgr->setRotate(true); //设置可旋转 qgr->update(); }
运行后可以看到一个3D的图表,这是老王的一个测试用例。
这个3D的图标支持鼠标动作,可以放大缩小,视角变换。视频号 懂一点技术的老王 中可以看鼠标的响应效果。
5、 基础部分就到这里。