Creating Your First Plot
The workhorse function for 2-D visualization in MATLAB is plot(x, y), which draws straight line segments connecting the data points defined by the vectors x and y. If x and y are the same length, MATLAB simply connects (x(1),y(1)) to (x(2),y(2)) and so on; if you omit x entirely and call plot(y), MATLAB uses the vector's index as the x-axis. Every call to plot on a fresh figure clears prior contents unless you explicitly hold the axes, which is why beginners are often surprised when a second plot() call erases the first line instead of adding to it.
Cricket analogy: Just as a Manhattan chart connects each over's run tally into a continuous line so a commentator can spot the momentum shift, plot(x,y) strings together discrete data points into a single visual trend.
x = 0:0.1:2*pi;
y = sin(x);
plot(x, y, 'b-', 'LineWidth', 2);
xlabel('x (radians)');
ylabel('sin(x)');
title('Sine Wave');
grid on;Line Styles, Colors, and Markers
MATLAB lets you control appearance with a compact LineSpec string, such as 'r--o', which combines a color (r for red), a line style (-- for dashed), and a marker (o for circle) in any order. For finer control, use name-value pairs like 'Color', [0.2 0.6 0.8], 'LineWidth', 2, or 'MarkerSize', 8 passed directly to plot(). Since R2014b, plot() returns a line object handle (h = plot(x,y)) whose properties can be modified after creation via h.Color = 'g' or set(h, 'LineWidth', 3), which is essential when you need to tweak a plot programmatically rather than re-typing the whole call.
Cricket analogy: Choosing 'r--o' for a plot is like a scorer deciding a team's boundary shots get a red dashed marker on the wagon wheel while singles get a plain blue dot, encoding meaning into visual style.
Labels, Titles, Legends, and Holding Plots
xlabel(), ylabel(), and title() attach text to the current axes, and legend('Series 1', 'Series 2') labels multiple lines drawn on the same axes; the order of legend strings must match the order the lines were plotted. To overlay multiple plots on one set of axes rather than replacing them, call hold on before subsequent plot() calls and hold off when finished. Since R2014b you can also plot multiple series in a single call, plot(x, y1, x, y2, 'r'), which avoids the need for hold entirely and keeps color cycling consistent through the default ColorOrder.
Cricket analogy: hold on layering a second team's run-rate line onto the same graph as the first is like a broadcaster overlaying two innings' worication-by-over graphs to compare a run chase directly against the target.
Since R2014b, each new line plotted without hold off automatically cycles through the axes' ColorOrder property, so successive plot() calls on the same held axes get different default colors without you specifying them.
Calling plot() again without hold on will silently delete the previous line and reset axis limits; if a plot mysteriously vanishes, check whether hold was left off before the next plotting command.
- plot(x, y) connects data points with straight line segments; omitting x uses the index as the horizontal axis.
- LineSpec strings like 'r--o' combine color, line style, and marker in a compact form.
- Name-value pairs ('LineWidth', 2) and returned line handles allow precise, post-hoc styling.
- xlabel, ylabel, title, and legend document what a plot shows and which line is which.
- hold on/hold off control whether new plot() calls overlay or replace existing content.
- Plotting multiple series in a single plot() call keeps default color cycling consistent.
- grid on adds reference gridlines that make reading values off a curve easier.
Practice what you learned
1. What happens when you call plot(y) with only one vector argument?
2. In the LineSpec string 'r--o', what does 'o' represent?
3. What is required to overlay a second plot() call on the same axes instead of replacing the first?
4. How can you change the color of an existing line after plotting without re-plotting?
5. Why must the order of strings passed to legend() match the plotting order?
Was this page helpful?
You May Also Like
Subplots and Figure Customization
Arrange multiple plots within a single figure using subplot and tiledlayout, and customize figure-level properties like size, background, and axes limits.
Curve Fitting and Interpolation
Learn to fit polynomial and custom models to data with polyfit and fit, and estimate values between known data points using interp1 and related interpolation functions.
Tables and Data Import
Work with MATLAB's table data type for organizing heterogeneous data with named columns, and use the Import Tool and related functions to bring in external datasets.
Related Reading
Related Study Notes in Programming
Browse all study notesApache Spark Study Notes
Programming · 30 topics
ProgrammingApache Flink Study Notes
Programming · 30 topics
ProgrammingHadoop Study Notes
Programming · 30 topics
ProgrammingSnowflake Study Notes
Programming · 30 topics
ProgrammingApache Airflow Study Notes
Programming · 30 topics
Programmingdbt (Data Build Tool) Study Notes
Programming · 30 topics