Clear Filters
Clear Filters

Plotting data on binary axis and draw lines between points

7 views (last 30 days)
Hi everyone,
I am trying to plot very simple data to better visualise the overall result. I've searched all I could think of, but I haven't been able to find any function able to do what I have in mind. I have 2 sets of data:
x1 = 2.6, 1.5, 1.4, 0.8, 3.2
y1 = 0.001, 0.9, 0.2, 0.5, 0.3
I want to plot both of these (x1 and y1) next to each other, on binary axes, using 'o' funtion for the data points and join the respective data points (i.e. 2.6 - 0.001, 1.5 - 0.9) with a line.
My problem, everything I tried so far hasn't worked or it re-arranges the axes and I dont know how to fix it. Please see the hand-drawn version of what I have in mind.
Any suggestions would be very appreciated!

Accepted Answer

Star Strider
Star Strider on 5 Sep 2022
Edited: Star Strider on 5 Sep 2022
Perhaps something like this —
x1 = [2.6, 1.5, 1.4, 0.8, 3.2];
y1 = [0.001, 0.9, 0.2, 0.5, 0.3];
figure
hs = scatter([1 2],[x1; y1].', 'filled');
hold on
plot([1 2], [x1([1 2]); y1([1 2])], 'LineWidth',3)
hold off
set(gca, 'XTick',[1 2], 'XTickLabel',{'x_1','y_1'})
xline(1.5,'--k')
xlim([0.5 2.5])
.
  6 Comments
Vyte Jan
Vyte Jan on 5 Sep 2022
Edited: Vyte Jan on 5 Sep 2022
@Image Analyst I actually have no preference on the 'o' filled or hollow, it was more for conveniace! But that is good advise. I'll see what looks better when I have all the results.
Thank you!!
Star Strider
Star Strider on 5 Sep 2022
My first post (before the edit) was simply —
x1 = [2.6, 1.5, 1.4, 0.8, 3.2];
y1 = [0.001, 0.9, 0.2, 0.5, 0.3];
figure
plot([1 2], [x1; y1].', '.-', 'MarkerSize',25, 'LineWidth',3)
set(gca, 'XTick',[1 2], 'XTickLabel',{'x_1','y_1'})
xline(1.5,'--k')
xlim([0.5 2.5])
.

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 5 Sep 2022
Try this:
x1 = [2.6, 1.5, 1.4, 0.8, 3.2];
y1 = [0.001, 0.9, 0.2, 0.5, 0.3];
plotColors = jet(length(x1));
for k = 1 : length(x1)
plot([0.5, 1.5], [x1(k), y1(k)], '.-', ...
'Color', plotColors(k, :), 'LineWidth', 3,'MarkerSize', 50)
hold on;
end
grid on;
xline(1, 'LineStyle','--', 'Color', 'k', 'LineWidth',2)
xlim([0, 2]);
xticks([0 : 0.5 : 2])
xticklabels({[], 'x1', [], 'y1'})

Tags

Community Treasure Hunt

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

Start Hunting!