How to create a vertical offset line

Please urgently if possible I need to solve the following problem
An equation give me graph of some layers at depths z1, z2, z3, and z4 (see attached figure), and I need to break them down (vertical offset) with a constant = z2-z1= z3-z2=z4-z3 (if satisfying this condition), in addition to drowing a vertical line (red line in satisfied location)

 Accepted Answer

Try something like this —
zv = sort(rand(4,1)) % Define 'z' Values
zv = 4×1
0.0231 0.1089 0.3493 0.7581
const = rand % Define Constant Offset
const = 0.0537
figure
plot([0 1], zv*[1 1], '-k', 'LineWidth',1.5)
hold on
plot([1 2], (zv-const)*[1 1], '-k', 'LineWidth',1.5)
hold off
xline(1, '-r', 'LineWidth',2)
linelabels = compose('z%d',numel(zv):-1:1);
text(zeros(size(zv)), zv, linelabels, 'Horiz','left', 'Vert','bottom')
text(zeros(size(zv))+2, zv-const, linelabels, 'Horiz','right', 'Vert','bottom')
set(gca, 'Visible','off') % Hide Axes (Optional)
Define the the ‘zv’ vector as a column vector of increasing values, and define the constant (‘const’) as a single scalar.
.

4 Comments

Thank you Star Strider
it is working but my Matlab version R2014b (old version) so, the command xline is not defined
As always, my pleasure!
Instead of xline then, try this slightly edited version —
zv = sort(rand(4,1)) % Define 'z' Values
zv = 4×1
0.1188 0.4990 0.6504 0.9499
const = rand % Define Constant Offset
const = 0.1647
figure
plot([0 1], zv*[1 1], '-k', 'LineWidth',1.5)
hold on
plot([1 2], (zv-const)*[1 1], '-k', 'LineWidth',1.5)
plot([1 1], ylim, '-r', 'LineWidth',2) % Work-Around For 'xline'
hold off
linelabels = compose('z%d',numel(zv):-1:1);
text(zeros(size(zv)), zv, linelabels, 'Horiz','left', 'Vert','bottom')
text(zeros(size(zv))+2, zv-const, linelabels, 'Horiz','right', 'Vert','bottom')
set(gca, 'Visible','off') % Hide Axes (Optional)
Everything else should work as written. If not, let me know and I will do what I can to solve whatever problems remain.
.
Thank you Star Strider for your always quick response ... well done
As always, my pleasure!

Sign in to comment.

More Answers (1)

Try xline and yline. You can use the 'LineWidth' and 'Color' option to set up the line thickness and color.

2 Comments

What about the vetical offset?
If the line is not going all the way across the graph, you can use line or plot() to specify the endpoints at whatever x and y values you want, so you'll get line segments.

Sign in to comment.

Categories

Community Treasure Hunt

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

Start Hunting!