精华内容
下载资源
问答
  • linux下的实时绘图

    千次阅读 2010-03-05 16:05:00
    我在项目的开发中遇到了这样一个问题,我要把下位机实时采集的数据,通过绘图显示到屏幕上,我采用了这样的思路,开启一个线程来接收下位机的数据,不至于使主线程阻塞,最开始我想到的是gtk_widget_queue_draw,...

    我在项目的开发中遇到了这样一个问题,我要把下位机实时采集的数据,通过绘图显示到屏幕上,我采用了这样的思路,开启一个线程来接收下位机的数据,不至于使主线程阻塞,最开始我想到的是gtk_widget_queue_draw,根本就不实时,因为这个函数是异步的,如果线程循环的比较频繁的话,绘图区就来不及刷新,更何况我有10个draw_area需要更新。

        百度了下,发现了gtk_widget_send_expose这个函数,查了下devhelp,有这样一段话:

        Very rarely-used function. This function is used to emit an expose event signals on a widget. This function is not normally used directly...

        If you want to force an area of a window to be redrawn, use gdk_window_invalidate_rect() or gdk_window_invalidate_region(). To cause the redraw to be done immediately, follow that call with a call to gdk_window_process_updates().

        很明显了,使用gdk_window_invalidate_rect和gdk_window_process_updates,但使用了这两个函数之后还是没达到我要的效果,我要按下键盘才能更新绘图区,沮丧。

        继续百度,发现了XFlush这个函数,调用了下,XFlush (GDK_WINDOW_XDISPLAY (draw_area->window));果然可以,不过又遇到了一个问题,程序运行一段时间之后,就没反应了,我按了下键盘,程序就崩溃了,终端输出了个提示,fatal io error 11,资源不够用啊之类的错误,我想函数应该不会出问题,线程和绘图之间的交错执行倒是让我感觉不妥,用GDB调试的时候,断点一会进入线程函数,一会进入绘图函数,我想问题大概就出在这里,又查了些线程的资料,补充后的代码如下:

    具体的绘图就写在绘图区的信号响应函数中,线程这一块还是第一次用,耗了我一天的时间来解决这个问题,结果就因为enter和leave,问题虽然解决了,但是线程这一块还要深入研究下,以后用到的还有很多。

     

    补充(2010.05.26):

            gdk_window_invalidate_rect (draw_area->window,
                NULL, FALSE);
            gdk_window_process_updates (draw_area->window,
                FALSE);
            XFlush (GDK_WINDOW_XDISPLAY (draw_area->window));
    这三句话可以用gdk_flush代替,而且更通用一些,适合X或者directfb

    展开全文
  • Linux绘图工具库GDK(一).pdf
  • CPU监控,并实时绘图脚本,使用matplotlib,psutil模块实现,在win10系统测试成功!
  • 我在项目的开发中遇到了这样一个问题,我要把下位机实时采集的数据,通过绘图显示到屏幕上,我采用了这样的思路,开启一个线程来接收下位机的数据,不至于使主线程阻塞,最开始我想到的是gtk_widget_queue_draw,...

    我在项目的开发中遇到了这样一个问题,我要把下位机实时采集的数据,通过绘图显示到屏幕上,我采用了这样的思路,开启一个线程来接收下位机的数据,不至于使主线程阻塞,最开始我想到的是gtk_widget_queue_draw,根本就不实时,因为这个函数是异步的,如果线程循环的比较频繁的话,绘图区就来不及刷新,更何况我有10个draw_area需要更新。

    百度了下,发现了gtk_widget_send_expose这个函数,查了下devhelp,有这样一段话:

    Very rarely-used function. This function is used to emit an expose event signals on a widget. This function is not normally used directly...

    If you want to force an area of a window to be redrawn, use gdk_window_invalidate_rect() or gdk_window_invalidate_region(). To cause the redraw to be done immediately, follow that call with a call to gdk_window_process_updates().

    很明显了,使用gdk_window_invalidate_rect和gdk_window_process_updates,但使用了这两个函数之后还是没达到我要的效果,我要按下键盘才能更新绘图区,沮丧。

    继续百度,发现了XFlush这个函数,调用了下,XFlush (GDK_WINDOW_XDISPLAY (draw_area->window));果然可以,不过又遇到了一个问题,程序运行一段时间之后,就没反应了,我按了下键盘,程序就崩溃了,终端输出了个提示,fatal io error 11,资源不够用啊之类的错误,我想函数应该不会出问题,线程和绘图之间的交错执行倒是让我感觉不妥,用GDB调试的时候,断点一会进入线程函数,一会进入绘图函数,我想问题大概就出在这里,又查了些线程的资料,补充后的代码如下:

    int main (int argc, char *argv[])

    {

    if (!g_thread_supported ())

    {

    g_thread_init (NULL);

    }

    gdk_threads_init ();

    gtk_init (&argc, &argv);

    ......

    gdk_threads_enter ();

    gtk_main ();

    gdk_threads_leave ();

    }

    void thread_monitor (void *arg)

    {

    while (1)

    {

    gdk_threads_enter ();

    gdk_window_invalidate_rect (draw_area->window,

    NULL, FALSE);

    gdk_window_process_updates (draw_area->window,

    FALSE);

    XFlush (GDK_WINDOW_XDISPLAY (draw_area->window));

    gdk_threads_leave ();

    g_usleep (300);

    }

    }

    具体的绘图就写在绘图区的信号响应函数中,线程这一块还是第一次用,耗了我一天的时间来解决这个问题,结果就因为enter和leave,问题虽然解决了,但是线程这一块还要深入研究下,以后用到的还有很多。

    补充(2010.05.26):

    gdk_window_invalidate_rect (draw_area->window,            NULL, FALSE);        gdk_window_process_updates (draw_area->window,            FALSE);        XFlush (GDK_WINDOW_XDISPLAY (draw_area->window));这三句话可以用gdk_flush代替,而且更通用一些,适合X或者directfb

    展开全文
  • 直观表示两组数据相关系数,均方根误差以及标准差之比等
  • Linux绘图函数

    2018-04-01 23:53:00
    gdk_draw_line () gdk_draw_rectangle () gdk_draw_arc () gdk_draw_polygon () gdk_draw_string () gdk_draw_text () gdk_draw_pixmap () gdk_draw_bitmap () gdk_draw_image () ......
    gdk_draw_line ()
    
    gdk_draw_rectangle ()
    
    gdk_draw_arc ()
    
    gdk_draw_polygon ()
    
    gdk_draw_string ()
    
    gdk_draw_text ()
    
    gdk_draw_pixmap ()
    
    gdk_draw_bitmap ()
    
    gdk_draw_image ()
    
    gdk_draw_points ()
    
    gdk_draw_segments ()

     

    转载于:https://www.cnblogs.com/Xanthus/p/8689194.html

    展开全文
  • LINUX下的矢量绘图软件代码,对学习LINUX编程有很大帮助。
  • Linux下得心应手矢量绘图.pdf
  • Linux绘图工具gnuplot基本操作

    千次阅读 2018-07-05 16:16:19
    1.gnuplot的安装 sudo apt-get install gnuplot sudo apt-get install gnuplot-x11 2.测试使用 输入 gnuplot 出现命令行,输入 plot sin(x) 画一条正弦曲线 如图 ...(2)设置保存的...

    1.gnuplot的安装

    sudo apt-get install gnuplot 
    sudo apt-get install gnuplot-x11  

    2.测试使用

    输入

    gnuplot

    出现命令行,输入

    plot sin(x)

    画一条正弦曲线
    如图

    这里写图片描述

    3.绘制的图形保存和查看

    (1)设置保存的图形类型为eps

    set term post eps

    保存为pdf格式

    set term pdfcairo

    保存为png格式

    set term pngcairo

    (2)设置保存的文件名
    set output “test.eps”
    (3)画曲线图形

    plot sin(x)

    此时不会弹出窗口
    (4)点击test.eps就直接能够打开查看了(注意用一个 postscript 查看器/打印机就可以查看生成的文件,ubantu自带的图像查看器也可以打开)

    4.加载文件并画图

    (1)在testdata.txt中加入以下内容,表示有三个点
    0 0
    1 1
    2 2
    (2)打开文件并并画图

    reset
    plot "testdata.txt"

    如图
    这里写图片描述
    (3)给点连上直线
    在后面加上with linespoints

    plot "testdata.txt" with linespoints

    5.设置文件中的某列作为x或y轴坐标

    设testdata.txt内容如下
    1 0 0 1 
    2 1 1 1
    3 2 2 1
    选取第2列作为x,第3列作为y,画直线,如图

    plot "testdata.txt" u 2:3 with linespoints

    6.画三维的点

    以testdata.txt中的第2列作为x,第3列作为y,第4列作为z画点
    splot “testdata.txt” u 2:3:4

    7.同一张图上画多条轨迹

    只要每个函数用英文逗号隔开就可以了

    plot "testdata.txt" u 2 w lp  lt 1 title 'x', "testdata.txt" u 3 w lp lt 2 title 'y' 

    同一个图像画出第二列和第三列的数据

    8.不同图上画不同轨迹

    需要添加set multiplot layout 行,列 指令

    reset
    set multiplot layout 2,1
    plot "testdata.txt" u 2 w lp  lt 1 title 'x',
    plot "testdata.txt" u 3 w lp lt 2 title 'y'

    title ‘y’ 表示标题
    lt 1 表示线型
    参考
    https://jingyan.baidu.com/article/ff42efa9da69f9c19e2202de.html

    展开全文
  • linux控制台绘图-安装svgalib(11)

    千次阅读 2008-01-15 00:31:00
    今天不打游戏了,就接着写文章吧。... 在LINUX下不能够直接像用TC的BGL那样进行绘图,需要借助图形库。LINUX下可选的图形库很多,我知道的有,QT/GTK/SDL/CURSES,NCURSES/MiniGuit/SVGALIB等等,如果想在
  • Linux qt5绘图

    2019-06-09 21:16:29
    //指定当前窗口为绘图设备 //绘图操作 //p.drawxxx(); //画背景图 //p.drawPixmap(0, 0, width(), height(), QPixmap("../Image/bk.png")); p.drawPixmap(rect(), QPixmap("../Image/bk.png")); //定义画笔 ...
  • linux下matplotlib绘图

    2018-01-24 21:20:48
    import matplotlib as mpl mpl.use('agg') x=[1,2,3] y=[4,5,6] plt.plot(x,y) plt.show() put.savefig('test.png')
  • linux绘图工具之dot

    千次阅读 2016-05-09 17:15:41
    有时候我们在linux下也会有绘制流程图的需求,你是不是也愁找不到一款合适的绘图工具呢,当然也有好多图形化的也是非常好用的(默默的说一声,我也是一个资深的菜鸟,当然没有用过了,也是工作没有用到) ...
  • 使用Plotly构建的实时绘图和项目管理库 它能做什么? Crystal是惊人有用的可视化工具的替代品,具有一些其他功能,使其不仅适用于机器学习,而且在需要实时数据可视化的任何项目中都非常有用。 您只需两行代码就...
  • Linux系统下地学绘图软件GMT的安装
  • 虽然相比 Windows 和 Mac,...当然,4 款都是绘图软件,大家按需自取~ Gimp:Linux下的Photoshop 推荐指数:★★★★★ 来源:Gimp官网 GIMP 被誉为 Linux 下处理图像的法宝,是 Linux 下的 Photoshop。 .
  • Rassam-paint 是一个开源的位图编辑和绘图工具,具有以下高级功能:自由选择工具、缩放、撤消、文本工具、调色板、动态调整图像大小、铅笔、线条、矩形、颜色选择器、圆形画笔、泛色填充、 Rectangle,Filters,And ...
  • linux 下的绘图软件Visio

    千次阅读 2019-05-07 20:31:38
    https://blog.csdn.net/trochiluses/article/details/9184469 https://tech.sina.com.cn/s/2012-03-16/14166844479.shtml
  • 嵌入式Linux的Qt/Embedded无闪烁绘图.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,008
精华内容 11,603
关键字:

linux实时绘图

linux 订阅