# Plot connected vertical points with different marks

4 views (last 30 days)
Rub Ron on 20 Aug 2021
Commented: Image Analyst on 20 Aug 2021
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?

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.
.
Rub Ron on 20 Aug 2021
@Kevin Holly thanks!

### 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 CommentsShowHide 1 older comment
Image Analyst on 20 Aug 2021
Yeah, that was not specified. But it looks like you've accepted an answer so I guess you got it all figured out for the case of variable number of rows.