精华内容
下载资源
问答
  • 提供的为完整源代码可运行。Qt实现文本实时显示,利用QFile读取在不断刷新的文本文件,并用QTextBrowser组件进行实时显示,以及动态曲线图的绘制。
  • matlab从曲线图提取数据

    千次阅读 2019-02-13 12:01:00
    上谷歌查了查,对于曲线图提取数据基本上是手动在曲线上取几个,然后由这个几个开始遍历领域,判断领域是否是黑色,然后再遍历这个黑色的领域,最终找出一条最长的线便是曲线,一种类似曲线拟合的做法?...

    同学用肉体一顿饭让我帮他做下这个DDL
    394393-20190213104934723-1680220050.png
    样图是一张非常扭曲的三虚线图他甚至想OCR识别x轴y轴坐标单位
    394393-20190213105154359-1585349174.png

    • 上谷歌查了查,对于曲线图提取数据基本上是手动在曲线上取几个点,然后由这个几个点开始遍历领域点,判断领域点是否是黑色,然后再遍历这个黑色点的领域,最终找出一条最长的线便是曲线,一种类似曲线拟合的做法?
    • 知乎专栏提供了一种思路,先把曲线图上无关信息去掉,然后提取最大的连通区域,就是所需要的实线,只可惜样例图要做的是虚线
      第一种方法是同学AA想要的,不过英国人嘛,只告诉他要这样做,并没有告诉他基本思想,所以我们基于第二种方法拓展尝试一下。

    清洗图像

    所给的图像是RGB图像,且有噪声点,先将图像灰度化,计算图像阈值,通过阈值将图像二值化。
    394393-20190213111800809-171602924.png

    提取真实区域

    想要的真实区域就是下图中使用红框标出的区域394393-20190213110058094-1821556175.png

    法1

    一开始的想法是先在图片的(end*0.8:end-10,)区域中霍夫变换识别出下边框,然后取下边框的(,1:10)部分识别左边框,取左边框的最上端坐标和下边框的最右端坐标,作为分割图像的基准,真实区域就分割出来了。

    • 提取下边框很顺利
      394393-20190213110845661-784803464.png
    • 提取左边框不是很顺利
      394393-20190213111033164-490780888.png
    • 提取右边框也不是很顺利
      394393-20190213111209649-763159646.png
    • 提取上边框很顺利
      394393-20190213111246700-1968147451.png
      虽然和计划的有所偏差,但通过上边框的最左端坐标和下边框的最右段坐标,作为分割图像的基准,得到的真实图像理论上是相同的。

    法2

    对于样例图,真实区域是封闭的,是图中的最大连通区域,那找最大联通区域也可以提取出样例图的真实区域。
    394393-20190213111619527-1620448458.png
    再取得该区域最左上端白点坐标和最右下端白点坐标,作为分割图像的基准,得到真实图像。
    真实图像如图所示
    394393-20190213113235798-1344988663.png

    再次清洗图像

    为了方便起见,下文中“图”、“图像”指的是上一步中得到的真实图像,而不是原始图像。
    对于得到的图像,仍然存在边框、刻度线、右下角标识区域等无关信息。

    • 边框可以直接通过上一步法1中得到的边框坐标数组去掉。
    • 刻度线以左边框的刻度线为例,遍历图像(,1:5)范围内,若该点是黑点,则从该点开始,向右寻找最大的直线区域,去除。
      样例图中存在曲线与刻度线相交的情况,我采用的方法是对于该点,如果24领域中的黑点总数大于一个阈值,则认为该点是曲线上的点,保留。
    • 右下角标识区域直接找取联通区域,如果该连通区域的大小大于阈值,认为是标识区域,去除。
      得到的结果图像,边界存在问题,有待改进:
      394393-20190213113411661-1574549539.png

    分离曲线

    三条曲线都不是实线,没法通过找最大联通区域的方法逐个分离,但因为不同曲线中实线部分的长度是不一样的,所以可以贪心一下,从第1列开始,以某个阈值add_len为步长,找最大连通区域,再进行拼接,以图中最上面一条曲线为例:

    • 首先取图像(:,1:10)区域中的最大联通区域,或者取3个联通区域,认为联通区域在列上的坐标极小值为其高度值,高度值越小则越高,最高者则为想要取得最上面一条曲线。
      394393-20190213114724890-496339508.png
    • 然后取得该联通区域中最右端的点n1(x,y),再取(:,y+1:y+add_len)中的n个联通区域,对于每个联通区域,找出其最左端的点n2(x1,y1),求n1与n2之间的欧式距离,认为欧式距离最短的就是该曲线在(:,y+1:y+add_len)的部分,然后重复该步,直到y值无限接近于图像最右端。
    • 对于上一步也有不同的做法,取得该联通区域中最右端的点n1(x,y),在从i=1开始循环,取(:,y+1:y+add_len)中的i个最大联通区域,对于第i个区域,他的面积总是第i大的,找出其最左端的点n2(x1,y1),求n1与n2之间的欧式距离,若欧式距离小于某个阈值,则认为该联通区域是该曲线在(:,y+1:y+add_len)的部分,然后重复该步,直到y值无限接近于图像最右端。
      过程如图:
      394393-20190213121411295-2087361139.gif
      两种做法进行比较,得出的曲线基本相同。
      取得最上端曲线a如图所示:
      394393-20190213115605108-967378269.png
      然后将该曲线在图中去除,再重复之前的做法,取得第二条曲线b。对于第二条曲线,add_len需要改小,欧式距离的阈值需要改大。
      394393-20190213115652711-295329606.png
      将第二条曲线去除,得到第三条曲线c
      394393-20190213115708819-750804372.png
      可以看出第三条曲线的图像存在噪点,可以用一个区域对噪点清洗,得到第三条曲线c
      394393-20190213115858528-1972931722.png

    导出数据

    将a,b,c的坐标值与图像的size相除,再乘上单位,即可得到数据。

    转载于:https://www.cnblogs.com/shy-/p/10369076.html

    展开全文
  • Jfreechart生成曲线图数据点显示数据值

    千次阅读 热门讨论 2007-05-15 10:48:00
    在工作中用到了生成曲线图时要将数据值显示在每个数据点上,并且不同数据线的数据点要显示不同的小图标,经过长时间的查找资料研究终于实现了功能。工作中就生成了如下的图片:生成此图中的数据点图标和显示数据值的...

    在工作中用到了生成曲线图时要将数据值显示在每个数据点上,并且不同数据线的数据点要显示不同的小图标,经过长时间的查找资料研究终于实现了功能。工作中就生成了如下的图片:

    生成此图中的数据点图标和显示数据值的主要代码就是下面这些,这里使用的是DefaultCategoryDataset数据集:

     

                    CategoryPlot plot = chart.getCategoryPlot(); 
                    plot.setBackgroundPaint(Color.WHITE);
                    plot.setRangeGridlinePaint(Color.BLUE);
    // 纵坐标格线颜色
                    plot.setDomainGridlinePaint(Color.BLACK); // 横坐标格线颜色
                    plot.setDomainGridlinesVisible( true ); // 显示横坐标格线
                    plot.setRangeGridlinesVisible( true ); // 显示纵坐标格线
                    
                                
                    LineAndShapeRenderer renderer 
    =  (LineAndShapeRenderer)plot.getRenderer();
                    DecimalFormat decimalformat1 
    =   new  DecimalFormat( " ##.## " ); // 数据点显示数据值的格式
                    renderer.setItemLabelGenerator( new  StandardCategoryItemLabelGenerator( " {2} " , decimalformat1));
                                                      
    // 上面这句是设置数据项标签的生成器
                    renderer.setItemLabelsVisible( true ); // 设置项标签显示
                    renderer.setBaseItemLabelsVisible( true ); // 基本项标签显示
                             
    // 上面这几句就决定了数据点按照设定的格式显示数据值  
                    renderer.setShapesFilled(Boolean.TRUE); // 在数据点显示实心的小图标
                    renderer.setShapesVisible( true ); // 设置显示小图标

     

    有用到的网友可以试一下。

    展开全文
  • 【Matlab学习手记】利用Matlab提取图片曲线数据

    万次阅读 多人点赞 2018-08-09 13:26:45
    目的:提取图片上的曲线数据点。比如,文献中的图表数据。 源代码 function varargout = DataExtract(varargin) % DATAEXTRACT MATLAB code for DataExtract.fig % DATAEXTRACT, by itself, creates a new DATA...

    2021-6-25 新增 github 源码链接,所以,自行下载,enjoy

    https://github.com/AFei19911012/MatlabSamples/tree/master/AppDesigner/SimpleImageToData

    目的:提取图片上的曲线数据点。比如,文献中的图表数据。

    2021-4-24 更新,代码已修改为 AppDesigner 设计,增加了自动提取功能:https://zhuanlan.zhihu.com/p/347520891

    •  源代码
    function varargout = DataExtract(varargin)
    % DATAEXTRACT MATLAB code for DataExtract.fig
    %      DATAEXTRACT, by itself, creates a new DATAEXTRACT or raises the existing
    %      singleton*.
    %
    %      H = DATAEXTRACT returns the handle to a new DATAEXTRACT or the handle to
    %      the existing singleton*.
    %
    %      DATAEXTRACT('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in DATAEXTRACT.M with the given input arguments.
    %
    %      DATAEXTRACT('Property','Value',...) creates a new DATAEXTRACT or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before DataExtract_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to DataExtract_OpeningFcn via varargin.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES
    
    % Edit the above text to modify the response to help DataExtract
    
    % Last Modified by GUIDE v2.5 30-Aug-2017 09:01:43
    
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @DataExtract_OpeningFcn, ...
                       'gui_OutputFcn',  @DataExtract_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
    
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
    
    
    % --- Executes just before DataExtract is made visible.
    function DataExtract_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to DataExtract (see VARARGIN)
    
    % Choose default command line output for DataExtract
    handles.output = hObject;
    
    % Update handles structure
    guidata(hObject, handles);
    
    % UIWAIT makes DataExtract wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
    
    
    % --- Outputs from this function are returned to the command line.
    function varargout = DataExtract_OutputFcn(hObject, eventdata, handles) 
    % varargout  cell array for returning output args (see VARARGOUT);
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    
    % Get default command line output from handles structure
    varargout{1} = handles.output;
    
    
    function pushbutton1_Callback(hObject, eventdata, handles)
    axes(handles.axes1)
    cla reset
    axis off
    set(handles.uitable1, 'data', []);
    
    set(handles.text5, 'string', 'Load a picture !!!');
    [FileName, PathName] = uigetfile({'*.bmp'}, 'Load a picture');
    if length(PathName) < 3
        msgbox('Failed to load a picture !!!');
        return;
    end
    FilePath = [PathName, FileName];
    Img = imread(FilePath);
    axes(handles.axes1);
    imshow(Img, 'Border', 'tight');
    
    set(handles.text5, 'string', 'Input the values in EditBoxs, press Enter to continue !!!');
    pause();
    
    set(handles.text5, 'string', 'Locate the start point !!!');
    currPt = ginput(1);
    x0 = currPt(1, 1);
    y0 = currPt(1, 2);
    line(x0, y0, 'marker', '.', 'color', 'r', 'markersize', 20);
    
    set(handles.text5, 'string', 'Locate the x-end point !!!');
    currPt = ginput(1);
    xend = currPt(1, 1);
    y = currPt(1, 2);
    line(xend, y, 'marker', '.', 'color', 'r', 'markersize', 20);
    line([x0, xend], [y0, y], 'color', 'r');
    
    set(handles.text5, 'string', 'Locate the y-end point !!!');
    currPt = ginput(1);
    x = currPt(1, 1);
    yend = currPt(1, 2);
    line(x, yend, 'marker', '.', 'color', 'r', 'markersize', 20);
    line([x0, x], [y0, yend], 'color', 'r');
    
    set(handles.text5, 'string', 'Now you can locate the point, press RightButton to locate the last point !!!');
    tableData = cell(0);
    con = 1;
    i = 1;
    xmin = str2double(get(handles.edit1, 'string'));
    xmax = str2double(get(handles.edit2, 'string'));
    ymin = str2double(get(handles.edit3, 'string'));
    ymax = str2double(get(handles.edit4, 'string'));
    scale1 = get(handles.radiobutton1, 'value');
    scale2 = get(handles.radiobutton3, 'value');
    while con == 1    
        [x, y, con] = ginput(1);
        line(x, y, 'marker', '.', 'color', 'r', 'markersize', 20);
        if scale1 == 1
            xx = (xmax - xmin)*(x - x0)/(xend - x0) + xmin;
        else
            xx = 10^((log10(xmax) - log10(xmin))*(x - x0)/(xend - x0) + log10(xmin));
        end
        if scale2 == 1
            yy = (ymax - ymin)*(y - y0)/(yend - y0) + ymin;
        else
            %yy = 10^((log10(ymax) - log10(ymin))*(log10(y) - log10(y0))/(log10(yend) - log10(y0)) + log10(ymin));
            yy = 10^((log10(ymax) - log10(ymin))*(y - y0)/(yend - y0) + log10(ymin));
        end
        tableData{i, 1} = i;
        tableData{i, 2} = xx;
        tableData{i, 3} = yy;
        set(handles.uitable1, 'data', tableData);
        i = i + 1;
    end
    
    function pushbutton2_Callback(hObject, eventdata, handles)
    [FileName, PathName] = uiputfile('*.txt', 'save file name');
    tableData = get(handles.uitable1, 'data');
    tableData = cell2mat(tableData);
    if ~isempty(tableData)
        dlmwrite([PathName, FileName], tableData(:, 2:end), 'delimiter', '\t', 'precision', '%8.4f');
    end
    
    function pushbutton3_Callback(hObject, eventdata, handles)
    close(gcf);
    
    function edit1_Callback(hObject, eventdata, handles)
    
    
    function edit1_CreateFcn(hObject, eventdata, handles)
    
    % Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    
    
    function edit2_Callback(hObject, eventdata, handles)
    
    
    function edit2_CreateFcn(hObject, eventdata, handles)
    
    % Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    
    
    function edit3_Callback(hObject, eventdata, handles)
    
    
    function edit3_CreateFcn(hObject, eventdata, handles)
    
    % Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    
    
    function edit4_Callback(hObject, eventdata, handles)
    
    
    function edit4_CreateFcn(hObject, eventdata, handles)
    
    % Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    
    • 源代码链接

    https://download.csdn.net/download/u012366767/10593012

    展开全文
  • 详细介绍使用MFC读取txt数据画曲线图方法,并列举例程代码供参考.关于MFC读取txt数据,并且画曲线图记事本中保存的...现在想把数据读出来,并且画曲线图到已经创建好的对话框上,希望画出坐标轴和数据点曲线,要这么做
  • C#绘制实时的数据曲线图

    热门讨论 2011-04-07 13:34:53
     为了操作和应付变化,所以将绘制曲线图的功能单独封装成一个类,里面的数据完全是模拟的,在横向坐标上每个像素间隔用一个来控制(实际中可能会加大这个距离),横向是个随机生成的数(实际开发中这应该来自我们...
  • 利用python提取网站曲线图数据

    千次阅读 热门讨论 2019-09-10 21:10:32
    数据目标:曲线图 F12,如图位置输入JSON.stringify(dataSeries.dataPoints) copy,粘贴到data.txt 数据是一个列表,里面是多个字典 编写程序如下: import json as js datafile = 'data1.txt' resultfile = ...

    文章目录

    数据1

    数据目标:曲线图
    在这里插入图片描述

    • F12,如图位置输入JSON.stringify(dataSeries.dataPoints)

    在这里插入图片描述

    • copy,粘贴到data.txt
      在这里插入图片描述
      数据是一个列表,里面是多个字典

    编写程序如下:

    import json as js
    datafile = 'data1.txt'
    resultfile = 'result.txt'
    result = open(resultfile,'w',encoding='utf-8')
    with open(datafile,'r',encoding='utf-8') as file:
        data = js.load(file)
    for data_i in data:
        for k,v in data_i.items():
            if k == 'x':
                strline = v[0:10] + '   '
            if k == 'y':
                strline = strline + str(v)
        result.write(strline+'\n')
    result.close()
    

    得到数据结果
    在这里插入图片描述

    数据2

    数据目标:曲线图

    • 查看图形源代码
      在这里插入图片描述
    • 找到数据所在行
      在这里插入图片描述
    • 复制到文本
      在这里插入图片描述
    • 编写程序
    import json as js
    datafile = 'data.txt'
    resultfile = 'result.txt'
    result = open(resultfile,'w',encoding='utf-8')
    with open(datafile,'r',encoding='utf-8') as file:
        data = js.load(file)
    for data_i in data:
        strline = ''
        for v in data_i:
                strline = strline + str(v) + '    '
        result.write(strline+'\n')
    result.close()
    
    • 得到结果
      在这里插入图片描述
    展开全文
  • ”在举国上下万众一心、...1、爬取新闻保存为json文件,并将绘图所需数据保存至数据库数据库表结构:代码部分:import pymysqlimport reimport sys,urllib,jsonfrom urllib import requestfrom datetime impo...
  • ![图片说明](https://img-ask.csdn.net/upload/201907/26/1564111306_761928.jpg) 比如根据这个图片里的曲线,自动生成数据点? 以前没做过python,导师给安排的任务一头雾水,求各位大佬指点方向。
  • 一开始取值并显示数据的时候,还算流畅,但是当过了三四十秒后,四条曲线上面的多了,显示的时候就开始卡顿了,有什么办法能够让这个实时曲线图数据采集频率一致,并且不卡顿界面的办法? ![图片说明]...
  • 曲线图中提取原始数据

    千次阅读 2019-04-05 20:45:00
    转自:原创2017-04-16Summer生物学霸生物学霸 微信号ShengWuXueBa 功能介绍「生物学霸」是丁香园...当你查阅文献时,发现一幅曲线图只有图像没有具体数据时,又该怎么办? 今天就来介绍两款软件——GetD...
  • 随机生成一组数据,QT用Qpainter绘制实时曲线图最简单的折线图
  • python读取excel数据绘制简单曲线图

    千次阅读 2020-10-27 16:59:39
    本文使用xlrd读取excel文件(xls,sxls格式),使用xlwt向excel写入数据 一、xlrd和xlwt的安装 安装很简单,windos+r调出运行窗口,输入cmd,进入命令行窗口,输入以下命令。 安装xlrd: pip install xlrd 安装xlwt: ...
  • C#曲线图绘制控件(含代码)

    热门讨论 2013-12-17 13:26:33
    一个能够绘制曲线图的控件,代码不完善,欢迎批评指正
  • Echarts 曲线图 实现 动态 添加数据

    千次阅读 2018-12-07 14:36:06
    * 返回需要的数据 * @return */ @RequestMapping("getTbHadoopQueueTime") @ResponseBody public JsonObject getTbHadoopQueue() { List<MonitorQueue> monitorQueues = monitorHadoopUserService....
  • 之所以遇到这个问题,还得从我这个Python菜鸟说起,我想把Python程序中print的误差结果绘制成曲线图,但是在程序中编写代码屡试不爽。。。于是计划利用熟悉的MATLAB绘制曲线图。 1.将误差结果保存成文本。 2.利用...
  • C#如何根据数据库的查找出来的数据绘制曲线图(折线图或者散点图均可)
  • 利用Python提取函数图像数据并拟合曲线

    千次阅读 多人点赞 2020-07-01 01:17:08
    学校导师要求拟合曲线,但只有函数图像没有数据,图像和公式都不懂就负责把系数算出来。 代码在 jupyter notebook 上跑的 环境: Python 3.7.4 conda 4.8.3 2. 数据提取 2.1 图像预处理 原始图像如所示: 利用...
  • js+html实现曲线图

    热门讨论 2009-09-22 21:44:37
    js+html实现曲线图,大家可以看看,有些地方做的不好,请多多指教.
  • QT系列之曲线图绘制(推荐QCustomPlot)

    千次阅读 多人点赞 2020-04-12 11:17:36
    一个好的曲线图应该具有的功能: 1.美观——背景,线条颜色,线条宽度,字体,边框间距,坐标轴间隔; 2.以鼠标为中心进行缩放,以及重置曲线图; 3.显示鼠标所在坐标值; 4.图中曲线的名称图例; 5.支持拖拽...
  • QT中利用QCustomPlot类画曲线图

    热门讨论 2015-01-31 20:05:24
    QT中利用QCustomPlot类画曲线图,程序中画了四条曲线,x,y轴自己赋值(若要接收外部数据需要扩展),每条曲线可以设置颜色和粗细以及不同的标记,每条曲线可以有说明。
  • HTML 绘制曲线图

    万次阅读 2019-01-18 09:23:59
    怎么样画一个漂亮的HTML曲线图
  • ls:折线的线条风格 color:颜色 marker:标记样式 lw:折线的线条宽度 label:标记图形内容的标签文本 示例代码: import matplotlib.pyplot as plt import numpy as np x = np.linspace(0.05, 10, 1000) y =...
  • 相关文章请看:https://blog.csdn.net/bwangk/article/details/82082133
  • origin画三个曲线图的方法

    万次阅读 2019-06-21 11:59:50
    如果你画的曲线图没有只有点,没有线连接,一定是你的数据有问题,中间有空数据或者有空格数据,完整图如下: 在每个上单击选中右键选择properties选择independent,也就是无关联,然后设置每个的颜色和线条...
  • DEVexpress chartControl 柱形图、饼形图、曲线图简单例子
  • matlab编写的读取.mat文件数据并画曲线图的gui程序。
  • 第一条曲线有60个数据点,而第二条有80个数据点。我得到的时间数组也是80个, 但是效果就是出不来。求大神教教我~ 如: ![图片说明]...
  • C#实时曲线图

    热门讨论 2011-10-28 16:38:09
    用c#写的实时曲线图,测试通过(变换频率可自设)
  • Android图表控件MPAndroidChart的简单介绍(MPAndroidChart3.0)Android图表控件MPAndroidChart——曲线图LineChart的使用(多条曲线)Android图表控件MPAndroidChart——曲线图LineChart(多条曲线)动态添加数据A....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 192,088
精华内容 76,835
关键字:

曲线图数据点