matlab 绘图 加横线竖线标志

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 绘图 加横线竖线标志相关的知识,希望对你有一定的参考价值。

如图,怎么在画图的时候在特定位置加上红圈里边的横线和竖线呢,退一步说,求出图中特定y值的时候,x的值?

1、下图Excel是Damon,Stefan,Elena,Catherines四人January-December的工资报表。

2、打开MATLAB,新建脚本(Ctrl+N),输入代码,读取Excel工资表,并绘制四人一月到十二月的工资线图。

3、保存和运行上述脚本,得到下图:Damon,Stefan,Elena,Catherines四人一月到十二月的工资线图。

4、在工作区(Work Place)能看到从Excel读取到的数据。

5、给第三步中的图形添图例,输入代码legend('Damon','Stefan','Elena','Catherines','location

','northwest')。保存和运行脚本就完成了。

参考技术A

1、打开软件,创建一个脚本文件,使用函数y=x,通过plot命令来绘制一条直线,输入如下代码。

2、可以看到已经绘制了一条增量为5,y=x的直线。

3、来绘制函数y = x^2,是一条曲线,在脚本文件输入如下代码。

4、我们可以看到已经绘制了一条曲线图。

5、来绘制正弦函数,y=sin(x),其中解释一下一些命令,title命令设置图表标题,grid on设置网格线,axis equal生成空格和比例因子绘图。

6、击运行,可以看到我们绘制出一条正弦函数曲线。

7、我们也可以绘制多个函数,这里通过y=sin(x),g=cos(x)来绘制正弦,余弦曲线。

8、看到我们已经成功绘制出了正弦,余弦曲线。

参考技术B

对于图中的曲线而言,由于y是单调变化的,可以使用插值的方法求对应指定y值的x坐标。

 

以下做一个简单的例子,希望对楼主有启发。

参考代码:

% 生成示例数据
x=0:0.1:2.2;
y=160./(1+exp(-6*(x-1)));
plot(x,y,'k')

% 画 85% 的横竖线
max_y = max(y);
y1 = 0.85 * max_y;
x1 = interp1(y,x,y1);
hold on
plot([x1 x1], [0 y1],'--k')
plot([0 x1], [y1 y1],'--k')
text(x1/2,y1,'85% 位','horiz','center','vert','bottom')

注意,这里我把坐标系左下角的横纵坐标都理解成0,而且y必须是单调变化的,否则需要做一些适当的修改。

本回答被提问者和网友采纳
参考技术C 这完全是两个问题,第一问是绘图技巧,第二问是数值计算。
只回答第二问:代码举例如下
x = (0:0.01:10).';
y = func(x);
[~, idx] = min(abs(y-80)); %
result = x(idx);
上面代码首先列举出x在[0,10]上的所有y值,然后从中查找最接近80的y,进而找到对应的x。追问

谢谢啦~~另外绘图技巧部分,能不能指点一下红圈里边的线怎么画出来呢

追答

用line函数硬画吧。用法看帮助,只需要指出起始点结束点就可以了。

python 探测表格的横线和竖线,找到表格区域

# coding: utf-8

import cv2 
 
class detectTable(object):
    def __init__(self, image):

        self.src_img = image

    def run(self):
        if len(self.src_img.shape) == 2:  # 灰度图
            gray_img = self.src_img
        elif len(self.src_img.shape) ==3:
            gray_img = cv2.cvtColor(self.src_img, cv2.COLOR_BGR2GRAY)

        # thresh_img = cv2.adaptiveThreshold(~gray_img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,-2)

        thresh_img = cv2.Canny(gray_img, 50, 150, apertureSize=3)
        h_img = thresh_img.copy()
        v_img = thresh_img.copy()
        scale = 20
        h_size = int(h_img.shape[1]/scale)

        h_structure = cv2.getStructuringElement(cv2.MORPH_RECT,(h_size,1)) # 形态学因子
        h_erode_img = cv2.erode(h_img,h_structure,1)

        h_dilate_img = cv2.dilate(h_erode_img,h_structure,1)
        # cv2.imshow("h_erode",h_dilate_img)
        v_size = int(v_img.shape[0] / scale)

        v_structure = cv2.getStructuringElement(cv2.MORPH_RECT, (1, v_size))  # 形态学因子
        v_erode_img = cv2.erode(v_img, v_structure, 1)
        # cv2.imshow("v_erode_img",v_erode_img)
        v_dilate_img = cv2.dilate(v_erode_img, v_structure, 1)

        mask_img = h_dilate_img+v_dilate_img
        joints_img = cv2.bitwise_and(h_dilate_img,v_dilate_img)

    
        #在mask的基础上找边框
        thresh1, contours1, hierarchy1 = cv2.findContours(h_dilate_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
        image_copy=self.src_img.copy()

        i=1
        predict_area=[]
        for cnt in contours1:
            x, y, w, h = cv2.boundingRect(cnt)
            if h>10 and w>12 and h<self.src_img.shape[0]-5 and w<self.src_img.shape[1]-5:
                predict_area.append((x-3,y-3,w+x+3,y+h+3))
        #         cv2.rectangle(image_copy, (x, y), (x + w, y + h), (0, 255, 0), 5)  # blue
                          
        cv2.imwrite("test.jpg",image_copy)
        cv2.imshow("h_dilate_img",h_dilate_img)
        cv2.imshow("mask",mask_img)
        cv2.imshow("image_copy",image_copy)
        
        cv2.waitKey(0)

        return predict_area

def main():
    temp_image=cv2.imread("./000217.png")
    cc=detectTable(temp_image).run()
    print(cc)


if __name__ == '__main__':
    main()

以上是关于matlab 绘图 加横线竖线标志的主要内容,如果未能解决你的问题,请参考以下文章

横线竖线处理

交通标志识别基于matlab GUI BP神经网络交通标志识别(带面板)含Matlab源码 1647期

交通标志识别基于matlab HOG特征结合BP神经网络交通标志识别含Matlab源码 2331期

交通标志识别基于matlab GUI BP神经网络交通标志识别系统(含语音报警)含Matlab源码 2240期

latex中表格横竖线条加粗?

R语言abline函数为图像添加竖线横线斜线回归线实战