How to plot a horizontal line at each co-ordinate.Here consider 1a,1b, 1c etc as horizontal points, energy values as vertical points.Also how to indicate which color is used for which.pls help.

1 件のコメント

Ilian
Ilian 2020 年 4 月 20 日
This is not an elegant solution but you can probably solve this with a loop and line()

サインインしてコメントする。

 採用された回答

Star Strider
Star Strider 2020 年 4 月 20 日

2 投票

Try this:
x = 1:10; % Create Data
yh = rand(size(x))-2; % Create Data
yl = rand(size(x))-4; % Create Data
hl = @(x,y,l,c) plot(x+[-l l], y*[1 1],c); % Anonymous Function To Draw Horizontal Lines
figure
hold on
for k = 1:numel(x)
hl(x(k),yh(k),0.5,'b')
hl(x(k),yl(k),0.5,'r')
text(x(k),yh(k), sprintf('%5.2f',yh(k)), 'VerticalAlignment','bottom', 'HorizontalAlignment','center')
text(x(k),yl(k), sprintf('%5.2f',yl(k)), 'VerticalAlignment','top', 'HorizontalAlignment','center')
text(x(k),yh(k),'\uparrow', 'VerticalAlignment','top', 'HorizontalAlignment','center')
text(x(k),yl(k),'\downarrow', 'VerticalAlignment','bottom', 'HorizontalAlignment','center')
text(x(k), mean([yh(k) yl(k)]), sprintf('%5.2f',(yh(k)-yl(k))), 'VerticalAlignment','middle', 'HorizontalAlignment','center')
plot([1 1]*x(k),[yl(k) yh(k)+sign(yh(k))*0.1], '-k', 'LineWidth',0.5)
end
yl = ylim;
ylim(yl+[-1 1]*0.2)
.

10 件のコメント

P Rakesh Kumar Dora
P Rakesh Kumar Dora 2020 年 4 月 20 日
If i want to put specific "y" values,then how can i do this?
THANKS
Star Strider
Star Strider 2020 年 4 月 20 日
My pleasure!
I am not certain what you are asking. In my code, ‘yh’ are the higher y-values and ‘yl’ are the lower y-values. I have no idea what your data are, so you would have to separate them into those vectors to use my code.
If you provide your x and y data, I can (probably) change my code to accommodate them.
Also, I forgot about the x-tick labels. Use this call:
set(gca, 'XTick',x, 'XTickLabel',{'1a' '1b' '1c' '2a' '2b' '2c' '3a' '3b' '3c'})
after the plotting loop to set them.
And use this ‘x’ vector with my code and those x-tick labels:
x = 1:9; % Create Data
.
P Rakesh Kumar Dora
P Rakesh Kumar Dora 2020 年 4 月 20 日
編集済み: P Rakesh Kumar Dora 2020 年 4 月 20 日
I have the following data.Also pls can you indicate which color is used for ' yh' and which for 'yl' like my first fig.on right side of the plot.
THANKS.
Star Strider
Star Strider 2020 年 4 月 20 日
My pleasure!
The ‘c’ (fourth) argument in the ‘hl’ anonymous function denotes the line color:
hl = @(x,y,l,c) plot(x+[-l l], y*[1 1],c); % Anonymous Function To Draw Horizontal Lines
so calling it in the loop:
hl(x(k),yh(k),0.5,'b')
hl(x(k),yl(k),0.5,'r')
uses blue ('b') for ‘yh’ and red ('r') for ‘yl’, since that is how they are plotted in the image you posted. The line lengths are 1 in this example (going from -0.5 to +0.5 with respect to ‘x’). The third (‘l’) argument controls that. It can be anything you want.
The rest of the code prints the labels for the horizontal lines and y-value differences, and plots the arrowheads and the vertical lines connecting them.
.
P Rakesh Kumar Dora
P Rakesh Kumar Dora 2020 年 4 月 20 日
Thanks a lot.
Star Strider
Star Strider 2020 年 4 月 20 日
As always, my pleasure!
P Rakesh Kumar Dora
P Rakesh Kumar Dora 2020 年 4 月 20 日
Pls can you tell me how to insert legend in the above plot.Like 'red line' corresponds to 'homo' and 'blue line'
corresponds to 'lumo' .Thanks.
Star Strider
Star Strider 2020 年 4 月 20 日
As always, my pleasure!
There are two ways to do that.
The first simply reverses the order of the legend arguments (with no other changes in the code), adding this line at the end:
legend('LUMO', 'HOMO')
The second requires returning the handles of the red and blue lines:
hu = hl(x(k),yh(k),0.5,'b');
hd = hl(x(k),yl(k),0.5,'r');
(with no changes in the rest of the code) and then at the end adding:
legend([hd hu], 'HOMO', 'LUMO')
Both of these work. Choose the one that you prefer.
.
P Rakesh Kumar Dora
P Rakesh Kumar Dora 2020 年 4 月 21 日
Thanks.
Star Strider
Star Strider 2020 年 4 月 21 日
As always, my pleasure!

サインインしてコメントする。

その他の回答 (1 件)

Steven Lord
Steven Lord 2020 年 4 月 20 日

0 投票

My first thought when I saw your picture was errorbar.

カテゴリ

ヘルプ センター および File Exchange で Data Distribution Plots についてさらに検索

製品

リリース

R2017b

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by