More line style in Matlab

I have a code which goes like this:
clear;clc;close all;
x1=(linspace(1,3,1800))';
y1=(linspace(1,2,1800))';
y2=(linspace(2,3,1800))';
y3=(linspace(3,4,1800))';
y4=(linspace(4,5,1800))';
y5=(linspace(5,6,1800))';
y6=(linspace(6,7,1800))';
y7=(linspace(7,8,1800))';
y8=(linspace(8,9,1800))';
y9=(linspace(9,10,1800))';
plot(x1,y1,x1,y2,'--',x1,y3,':',x1,y4,'-.',x1,y5,x1,y6,x1,y7,x1,y8,x1,y9,'LineWidth',2)
As one can see from the plot, nine lines are there. Matlab gives variety of coloring option, but as far as line style is concerned, one can have only 4 options: -, --, : and :. . How can i increase this options?? I have to emphasis that I would NOT like to have markers in the plot.
I have generated the same plots on Grapher software, where once have variety of options. For instance, see the figure below. This has been made with following line options: Solid, 0.1 inch dash, 0.3 inch dash, 0.5 inch dash, Dash dot, Dash dot dot, Dash dot dot dot, Dash Dash dot dot, Dash Dash dot dot dot.
How can one plot like this??? A hint lies at this link.
Thanks in advance...

2 Comments

I've wondered this for years. How can Matlab have such a poor selection of linestyles?
Same here. Even in MATLAB 2019, there are only FOUR line styles.
I'm wondering whether it is too difficult to add some line styles for MATHWORKS?

Sign in to comment.

 Accepted Answer

Walter Roberson
Walter Roberson on 12 Mar 2020
Edited: Walter Roberson on 12 Aug 2021

5 Comments

But how to incorporate hold on command?
In your original code you do not need hold: the form of plot() you used with multiple x y lists will automatically hold after the first data is drawn and restore the hold state after the last one in the list.
In general you just use hold on after the initial graphics command and use hold off when you have reached the end of the graphics commands.
Thanks for the suggesion. I understood your point. But, even with the modiifcation as described as follows,
figure(1)
plot(x1,y1,x1,y2,'--',x1,y3,':',x1,y4,'-.',x1,y5,x1,y6,x1,y7,x1,y8,x1,y9,'LineWidth',2)
figure(2)
dashline(x1,y1,'-.r',3,'.g',6)
hold on
dashline(x1,y2,'-.r',3,'.g',6)
I am not able to get the desired plot. Seems like only
dashline(x1,y1,'-.r',3,'.g',6)
is getting executed. What am I doing wrong?
Can you attach some sample data for testing?
y1, y2, y3, ... are all listed in the above main program.

Sign in to comment.

More Answers (2)

madhan ravi
madhan ravi on 23 Oct 2018
Edited: madhan ravi on 23 Oct 2018
plot(x,y,'-','LineWidth',10)

4 Comments

madhan ravi
madhan ravi on 23 Oct 2018
Edited: madhan ravi on 23 Oct 2018
Didn’t read your NoT marker part , okay use linewidth with varying sizes
h=plot(x1,y1,x2,y2,'LineWidth',8);
set(h(1),'linewidth',5);
set(h(2),'linewidth',10);
you could also try above example using Linewidth
Thanks for the effort, but I want it in the same form as i asked in the question. A plot with this much thickness does not look good in paper.

Sign in to comment.

Categories

Find more on Graphics in Help Center and File Exchange

Products

Release

R2017b

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!