display legends with different line styles in matlab

How one can draw a graph with different line styles corresponding to different legends? For instance, my data is 5 by 4 as follows:
__________________________________________________
A B C D
__________________________________________________
0.84702 0.64419 0.61728 0.48538
0.76445 0.1864 0.39728 0.15959
0.04743 0.0412 0.09432 0.86721
0.4256 0.1458 0.05432 0.803192
0.9855 0.8242 0.5679 0.7102
___________________________________________________
So far I tried the following, first I saved this data file as 'myData.m'. Next, I load it on my Matlab window using the command 'load myData.m'. Then after, I have used the followig codes:
[n,p] = size(myData);
t = 1:n;
plot(t,myData)
legend('A','B','C','D','Location','NorthEast')
xlabel('Time'); ylabel('Value');
How can I display legends with different line styles((like '-','.-','.' and '--')) along with different colours using Matlab?

 Accepted Answer

If you plot() one line at a time, then you can usually pass a linespec to the plotting routines; sometimes you need to pass a 'LineStyle' name/value pair.
If you are plot()'ing with four different X, Y pairs, then you can put a linespec after each one:
plot(x1, y1, '-', x2, y2, '.', x3, y3, '--', x4, y4, '.-')
If you are plotting with four columns in your Y, then you need to record the line handles and set their LineStyle property:
h = plot(x, Y_by_4);
set(h(1), 'LineStyle', '-');
set(h(2), 'LineStyle', '.');
etc

2 Comments

@Walter Roberson Thanks! I edited it now. Still I couldn't manage the error.
Replace
[n,p] = size(myData);
t = 1:n;
plot(t,myData)
with
h = plot(myData);
set(h(1), 'LineStyle', '-');
set(h(2), 'LineStyle', ':');
set(h(3), 'LineStyle', '--');
set(h(4), 'LineStyle', '-.');
Note: these are the only four valid line styles (other than 'none')

Sign in to comment.

More Answers (1)

col = [0,0,1;0.9,0.4,0.17;0,1,0]; % Blue, Orange, Green How do I change this to linestyle

8 Comments

Those are not valid line styles.
The plot routines often accept a "linespec" which is a character vector that potentially encodes color and style and marker shape. linespec only permit color names or color codes such as 'black' or 'k' to specify the color. linespec do not permit rgb triples (unless there is a formal I am forgetting.) To pass an rgb color use 'Color' name/value pair, but you can only use one of those per plot() call. If you are plotting multiple items in the same call and want specific rgb color then record the plot handles and set the Color associated with the line objects.
col = [0,0,1;0.9,0.4,0.17;0,1,0]; % Blue, Orange, Green This line of code in the codes where multiple items are plotted in the same call ...what I want to do now is to change it to linestyle...
How do you combine both the linestyle and colour?
Tried but still not working
Change
col = [0,0,1;0.9,0.4,0.17;0,1,0]; % Blue, Orange, Green
to
col = {'-', ':', '--'};
Change
plot(linAx,W*1e-12,JxL*1e13,'color',col(i,:))
to
plot(linAx,W*1e-12,JxL*1e13, col{i});

Sign in to comment.

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!