# Plot connected vertical points with different marks

4 views (last 30 days)

Show older comments

I have a vector x=[ 1 2 3 4], and a matrix of size: 3x4.

I want to plot something like this:

Update: the number of vertical points can be different (in my example I used 3, but they can be from 2 to 5).

Update 2: "x" mark is not the center, it might happen than "x" mark is lower or higher than the other two points, for a particular x value.

Any ideas?

##### 0 Comments

### Accepted Answer

Star Strider
on 20 Aug 2021

Try something like this —

x=[ 1 2 3 4];

M = rand(3,4);

Mx = max(M);

Mn = min(M);

figure

plot(x, Mx, 'd')

hold on

plot(x, Mn, 'o')

plot([x; x], [Mx; Mn], '--k')

hold off

grid

xlim([0 5])

.I am not certain what the ‘x’ markers in the centres of the lines represent, so I did not include them. However they could llikely be added with one plot call.

.

### More Answers (1)

Image Analyst
on 20 Aug 2021

Try this:

markerSize = 14;

lineWidth = 2;

x = [1 2 3 4]

y = 0.1 + 0.4 * rand(3, 4)

[rows, columns] = size(y)

for col = 1 : columns

yTop = max(y(:, col));

yBottom = min(y(:, col));

yMid = setdiff(y(:, col), [yTop; yBottom]);

% Plot line

plot([x(col), x(col)], [yBottom, yTop], 'b-', 'LineWidth', 3);

hold on;

% Plot markers

plot(x(col), yTop, 'bd', 'LineWidth', lineWidth, 'MarkerSize', markerSize);

plot(x(col), yBottom, 'bo', 'LineWidth', lineWidth, 'MarkerSize', markerSize);

plot(x(col), yMid, 'bx', 'LineWidth', lineWidth, 'MarkerSize', markerSize);

end

grid on;

##### 2 Comments

Image Analyst
on 20 Aug 2021

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!