logo for matrixlab-examples.com
[?] Subscribe To This Site

XML RSS
Add to Google
Add to My Yahoo!
Add to My MSN
Subscribe with Bloglines


Home
Matrixmania Blog
Contact
-> Sitemap <-
Matlab Books
Quick Matlab Guide
Matlab Tutorials
Matlab Examples
Matlab Flow Control
Boolean Algebra
Linear Algebra
Matlab 2D Plots
Matlab 3D Plots
Matlab GUI
Matlab Cookbook I
Matlab Cookbook II
Probability and Stats
Forums and Help
Relevant Links
Fun!
Your own Website?
Terms/Policies
leftimage for matrixlab-examples.com

Matlab Plotting - Horizontal Lines and Vertical lines



We are going to create a simple Matlab function to add horizontal lines (and vertical ones) to any given Matlab-created plot.

For example, let's say that we need to add some indications or annotations to a plot, and we need to display and indicate some upper or lower limits.

The proposed Matlab function will have 5 input parameters:
  • Initial value (where the horizontal line will start)
  • Final value (where the line will end)
  • Y value (vertical position of the line with respect to the plot)
  • Direction (to indicate the direction of the annotation: 1 going upwards, or -1 going downwards, like an arrow)
  • Vertical range (to display aesthetically proportioned lines)

We plan the usage of our function like this (its name will be 'plot_limit'):

Usage:    L = [L_min L_max y d r];
             plot_limit(L);

where
           L_min = starting point
           L_max = ending point
           y = y value of horizontal line
           d = direction (1 or -1)
           r = y range

So, we need to know in advance where we want to put our line (sure!).

We define our horizontal and vertical values. We arbitrarily define 300 horizontal points and use a linewidth = 1.5. The instruction 'hold on' keeps the current figure, instead of overwriting it. This Matlab code displays just a horizontal line.

a = linspace(L_min, L_max, 300);
b = linspace(y, y, 300);
plot(a,b,'k-','linewidth',1.5)
hold on

Then, we add some tiny vertical lines on each side of the horizontal one. If direction 'd' is 1, the vertical lines are below the horizontal line (going 'up'). If direction 'd' is -1, the vertical lines are above the horizontal one (going 'down'). We take the vertical range into account, in 'r', to display a vertical line of just 3% of the total 'height' of the current figure. You can try different values to suit your needs, obviously. We find the initial or final points of the vertical lines with an 'if-statement'.

This is the code to achieve it.

% Initial vertical line
a = linspace(L_min, L_min, 10);
if d == 1
    b = linspace(y-r*.03, y, 10);
else
    b = linspace(y, y+r*.03, 10);
end
plot(a,b,'k-','linewidth',1.5)
hold on

% Final vertical line
a = linspace(L_max, L_max, 10);
if d == 1
    b = linspace(y-r*.03, y, 10);
else
    b = linspace(y, y+r*.03, 10);
end
plot(a,b,'k-','linewidth',1.5)



Now, we'll test our function with this script.

clear; clc; close all

x = 0 : 2*pi/360 : 2*pi;
y = sin(x);

plot(x,y)
grid on
xlabel('angle')
ylabel('sin(x)')
title('Plot showing horizontal and vertical lines')
hold on
plot_limit([0.8, 2.5, 0.4, 1, 2])
plot_limit([4, 5.4, -0.6, -1, 2])

The result is:
horizontal and vertical lines in Matlab plots
The first line starts at 0.8, ends at 2.5, and has a vertical value of 0.4. The vertical lines simulate an up-arrow (d = 1).

The second line starts at 4, ends at 5.4, and has a vertical value of -0.6. Direction goes down (d = -1).



From 'Horizontal Lines' to home
From 'Horizontal Lines' to 2D plots

footer for horizontal lines page