How to Create Scatter Plot in MATLAB

Ammar Ali Feb 02, 2024
How to Create Scatter Plot in MATLAB

This tutorial will discuss creating a scatter plot using the scatter() function in MATLAB.

Create a Scatter Plot Using the scatter() Function in MATLAB

The scatter(x,y) function creates a scatter plot on the location specified by the input vectors x and y. By default, the scatter() function uses circular markers to plot the given data. For example, let’s use the scatter() function to create a scatter plot of given data. See the code below.

x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);  
scatter(x,y)

Output:

Scatter Plot

The data stored in the variables x and y is used to create a scatter plot in the output. Make sure the length of the variable x and y should be the same. Otherwise, MATLAB will show an error. By default, the scatter() function uses the default value for the size and color of the circles, but we can change the default properties of the function. For example, to change the size of the circles, we have to define the size of the circles as a third argument inside the scatter() function. For example, let’s change the size of the circles in the above plot. See the code below.

x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);  
scatter(x,y,10)

Output:

Changing size of the Circles in the scatter plot

The size of the circles in the above output is different as compared with the size of circles in the previous scatter plot. The size should be a positive numeric value or a vector of the same size as the input vectors x and y. If the size is a single positive numeric value, just like in the above code, it will apply to all the circles present in the scatter plot. We can also give each circle a different size value using a vector of the same length as the input vectors x and y. For example, let’s change the size of each circle in the above scatter plot. See the code below.

x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize)

Output:

scatter plot with different circle sizes

In the above output, each circle has a different size. We can also alter the color of the circles in the scatter plot by passing it as a fourth argument in the scatter() function. For example, let’s change the color of the circles in the above scatter plot to black. See the code below.

x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize,[0 0 0])

Output:

Changing Color of the Circles in the Scatter Plot

In the above scatter plot, the color of the circles is black, but we can give it any color by entering that color’s RGB value as a fourth argument in the scatter() function. We can also change the color by passing the color name as a string in the scatter() function. If we define only one color value, it will be applied to all the circles present in the scatter plot. We can also give each circle a different color by using a matrix of the same size as the input vectors x and y. The matrix can contain positive numeric values or RGB triplets of colors. For example, let’s change the color of each circle in the above scatter plot. See the code below.

x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor)
colorbar

Output:

scatter plot with different circle colors

The colorbar command is used in the above code to plot a color bar in the scatter plot. We can see from the color bar that the low values belong to the colder color, and the high values belong to the hotter color. We used a vector with positive numeric values in this example, but we can also use a matrix with RGB triplet values. The circles are hollow in the above scatter plots, but we can also fill them using the filled property inside the scatter() function. For example, let’s fill the circles present in the above scatter plot. See the code below.

x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'filled')
colorbar

Output:

Filling Circles in Scatter Plot

In the output, each color is filled. We can also change the marker symbol in the scatter plot. By default, the scatter() function uses the circle as the marker, but we can change it by passing a string containing the marker symbol like d for diamond, p for the pentagram, h for the hexagram, and so on. For example, let’s change the marker symbol from circle to pentagram in the above scatter plot. See the code below.

x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'p')

Output:

Changing Marker Symbol in Scatter Plot

In the output, the marker symbol is changed to a pentagram. We can also alter the transparency of the marker using the MarkerFaceAlpha property in the scatter() function. We can change the transparency value from 0 to 1. For example, let’s change the transparency of the above scatter plot to 0.5. See the code below.

x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'filled','MarkerFaceAlpha',0.5)

Output:

Changing Marker Transparency in Scatter Plot

In the output, the marker has the same edge and face color, but we can give the marker a different edge and face color. To alter the edge color of the marker, we can use the MarkerEdgeColor property inside the scatter() plot. To alter the face color of the marker, we can use the MarkerFaceColor property. The color value can be any RGB triplet or a string containing the color name. We can also alter the line width of the marker’s edge using the LineWidth property. For example, let’s change the edge color, face color, and the line width of the marker in the above scatter plot. See the code below.

x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize,'MarkerFaceColor','yellow','MarkerEdgeColor','black','LineWidth',1.5)

Output:

Changing Marker Face and Edge Color in Scatter Plot

In the output, the marker face color is yellow, and the edge color is black. If we want to create a 3D scatter plot, we can use the scatter3() function. This function is the same as the scatter() function, except that it plots the given data in a 3D plane. We can give two or three input vectors to the scatter3() function. In the case of three inputs, the first vector contains the x coordinates, the second contains the y coordinates, and the third contains the z coordinates. In the case of two input vectors, the third coordinate z will be taken from the indices of the first two coordinates. For example, let’s plot the above scatter plot in 3D place using the scatter3() function. See the code below.

x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
z = 1:100;
scatter3(x,y,z)

Output:

Scatter Plot in 3D Plane

We can also change the scatter3() function properties in the same way as we did with the scatter() function.

Author: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Related Article - MATLAB Plot