Accelerating the pace of engineering and science

• Trials

# line

Create line object

## Syntax

line
line(X,Y)
line(X,Y,Z)
line(X,Y,Z,'PropertyName',propertyvalue,...)
line('XData',x,'YData',y,'ZData',z,...)
h = line(...)

## Properties

For a list of properties, see Line Properties.

## Description

line creates a line object in the current axes with default values x = [0 1] and y = [0 1]. You can specify the color, width, line style, and marker type, as well as other characteristics.

The line function has two forms:

• Automatic color and line style cycling. When you specify multiple line coordinate data as a column array using the informal syntax (i.e., the first three arguments are interpreted as the coordinates),

`line(X,Y,Z)`

MATLAB® cycles through the axes ColorOrder and LineStyleOrder property values the way the plot function does. However, unlike plot, line does not call the newplot function.

• Purely low-level behavior. When you call line with only property name/property value pairs,

`line('XData',x,'YData',y,'ZData',z)`

MATLAB draws a line object in the current axes using the default line color (see the colordef function for information on color defaults). Note that you cannot specify matrix coordinate data with the low-level form of the line function.

line(X,Y) adds the line defined in vectors X and Y to the current axes. If X and Y are matrices of the same size, line draws one line per column.

line(X,Y,Z) creates lines in three-dimensional coordinates.

line(X,Y,Z,'PropertyName',propertyvalue,...) creates a line using the values for the property name/property value pairs specified and default values for all other properties. For a description of the properties, see Line Properties.

See the LineStyle and Marker properties for a list of supported values.

line('XData',x,'YData',y,'ZData',z,...) creates a line in the current axes using the property values defined as arguments. This is the low-level form of the line function, which does not accept matrix coordinate data as the other informal forms described above.

h = line(...) returns a column vector of handles corresponding to each line object the function creates.

## Examples

This example uses the line function to add a shadow to plotted data. First, plot some data and save the line's handle:

```t = 0:pi/20:2*pi;
hline1 = plot(t,sin(t),'k');```

Next, add a shadow by offsetting the x-coordinates. Make the shadow line light gray and wider than the default LineWidth:

```hline2 = line(t+.06,sin(t),...
'LineWidth',4,'Color',[.8 .8 .8]);```

Finally, pull the first line to the front:

`set(gca,'Children',[hline1 hline2])`

### Drawing Lines Interactively

You can use the ginput function to select points from a figure. For example:

```[x,y] = ginput(5);
line(x,y)```

Drawing with mouse motion

You can use the axes CurrentPoint property and the figure WindowButtonDownFcn and WindowButtonMotionFcn properties to select a point with a mouse click and draw a line to another point by dragging the mouse, like a simple drawing program. The following example illustrates a few useful techniques for doing this type of interactive drawing.

Click to view in editorClick to view in editor — This example enables you to click and drag the cursor to draw lines.

Click to run exampleClick to run example — Click the left mouse button in the axes and move the cursor, left-click to define the line end point, right-click to end drawing mode.

### Input Argument Dimensions — Informal Form

This statement reuses the one-column matrix specified for ZData to produce two lines, each having four points.

`line(rand(4,2),rand(4,2),rand(4,1))`

If all the data has the same number of columns and one row each, MATLAB transposes the matrices to produce data for plotting. For example,

`line(rand(1,4),rand(1,4),rand(1,4))`

is changed to

`line(rand(4,1),rand(4,1),rand(4,1))`

This also applies to the case when just one or two matrices have one row. For example, the statement

`line(rand(2,4),rand(2,4),rand(1,4))`

is equivalent to

`line(rand(4,2),rand(4,2),rand(4,1))`

## Setting Default Properties

You can set default line properties on the axes, figure, and rootobject levels:

```set(0,'DefaultLinePropertyName',PropertyValue,...)
set(gcf,'DefaultLinePropertyName',PropertyValue,...)
set(gca,'DefaultLinePropertyName',PropertyValue,...)
```

Where PropertyName is the name of the line property and PropertyValue is the value you are specifying. Use set and get to access line properties.

expand all

### Tips

In its informal form, the line function interprets the first three arguments (two for 2-D) as the X, Y, and Z coordinate data, allowing you to omit the property names. You must specify all other properties as name/value pairs. For example,

`line(X,Y,Z,'Color','r','LineWidth',4)`

The low-level form of the line function can have arguments that are only property name/property value pairs. For example,

```line('XData',x,'YData',y,'ZData',z,...
'Color','r','LineWidth',4)```

Line properties control various aspects of the line object and are described in Line Properties. You can also set and query property values after creating the line using set and get.

You can specify properties as property name/property value pairs, structure arrays, and cell arrays (see the set and get reference pages for examples of how to specify these data types).

Unlike high-level functions such as plot, line does not respect the settings of the figure and axes NextPlot properties. It simply adds line objects to the current axes. However, axes properties that are under automatic control, such as the axis limits, can change to accommodate the line within the current axes.

Connecting the dots

The coordinate data is interpreted as vectors of corresponding x, y, and z values:

```X = [x(1) x(2) x(3)...x(n)]
Y = [y(1) y(2) y(3)...y(n)]
Z = [z(1) z(2) z(3)...z(n)]```

where a point is determined by the corresponding vector elements:

`p1(x(i),y(i),z(i))`

For example, to draw a line from the point located at x = .3 and y = .4 and z = 1 to the point located at x = .7 and y = .9 and z = 1, use the following data:

```axis([0 1 0 1])
line([.3 .7],[.4 .9],[1 1],'Marker','.','LineStyle','-')```