leftimage for poohprod.ru

Matlab Plotting - Horizontal Lines and Vertical lines

1.- Basics

2.- Code

3.- Applied Example

4.- Video (alternative code)


1.- Basics

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'.

2.- Code

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)


3.- Applied Example

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).


4.- Video


From 'Horizontal Lines' to home

From 'Horizontal Lines' to 2D plots

Top



footer for horizontal lines page






















































































































































Related pages


matlab curvefitcapacitor discharge equationhow to calculate depreciation rate formulahow to graph using matlabsecond order polynomial fitmatlab binfinding factorialchi square matlabharmonic seriesread xls matlabhalf life formula exponential decayauto salvage value calculatorsolving half life equationscoding in matlab tutorialhow to solve exponential decay problemsascii for lettersmatlab boolean operatorshome amortization tablemaclaurin series expansion calculatorresistor capacitor networkcontinuous interest rate calculatorcalculating fibonacci numberssolve matlab functionbisection algorithm matlabisnan matlabrandn function in matlabdepreciation residual value calculationhow to call a function in matlabderivative function in matlabbisect methodcalculate fibonaccimatlab impulselagrange approximationascii code binary tablematlab basic tutorialconvert binary to gray codematlab diracmatlab binomial coefficientmatlab gui book1089 magic trickrand matlabsurface plot in matlabsigned binary to decimal converterhexa decimal systemmaclaurin series sin xprogram to generate fibonacci serieswrite a program to solve quadratic equationboolean logic xorhow to learn matlab quicklynet salvage value formulapythagorean theorem calculator with variablessolve an equation in matlabhello world matlabsolve nonlinear equation matlabsurfcwrite a program to calculate factorial of a numberascii value chartplotting 3d graphs in matlabtrapezoidal rule online calculatornonlinear systems of equations solverhow to plot 3d in matlabmatlab polyhow to learn matlab programming3d graphing matlabdecimal to binary methodpythagorean theorem solvermatlab callback exampledouble logarithmic plotonline definite integral calculatorwatt calculator costgauss jordan matlabdecimal to octal conversion examplesbmi calculator javascript codeamitorization table