图中的垂直线

时间:2017-06-09 01:28:44

标签: matlab plot matlab-figure

我想绘制y的最大值的垂直线(x近20的hier),怎么做? (我的意思是从这个值(x = 20,ymax)向下到(x = 20,y = 0))

x = logspace(0,5);
y=[0;0;0;0;0;0;0;0.15;0.34;0.51;0.71;0.84;0.88;0.856;0.75;0.63;0.47;0.36;0.32;0.33;0.37;0.45;0.5;0.51;0.48;0.4;0.33;0.22;0.14;0.07;0.02;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0];
y=y';

figure(5) 
plot(x,y,'-o','LineWidth',2);
%ax(1) = axes('Position',[0.35 0.13 0.3 0.8]); 
xlim([0,10000]); 
ylim([0,1]);
set(gca, 'XScale', 'log')

grid on
grid minor
set(gca,'FontSize', 20);
set(gca,'Linewidth',1.8);

title('\rm Verteilung der Porengrößen');
xlabel('Porengröße [{\fontsize{24}\mu}{\fontsize{20}m}]');
ylabel('Amplitude des NMR-Signals [V]');

2 个答案:

答案 0 :(得分:4)

使用hold on保留上一个图。查找y的{​​{1}} imum值以及x的最大y值和max垂直线,如下所示:

hold on;
plot([x(y==max(y)); x(y==max(y))], [0; max(y)]);
hold off;

给出:

plot

即使您有多个最高分,这也有效。 这是另一个具有3个最大点的随机数据的输出:

output

如您所见,这会使线条具有不同的颜色。如果您想要相同的颜色,请使用plot的{​​{3}}属性,

答案 1 :(得分:3)

您可以使用stem

% ... your code
%
[maxy, idx] = max(y); % Get maximum y and its index
hold on               % use hold on to plot again on same axes
% vertical stem plot, various marker options available: see docs
stem(x(idx), maxy, 'marker', 'none', 'linewidth', 1.8)

输出:

one vertical line

此代码绘制第一个最大值的垂直线。如果成功你将拥有多个相等的最大值,那么你应该使用这样的东西:

idx = (y == max(y));  % Get *all* logical indices of max values
hold on  
% Plot vertical lines at all max points
stem(x(idx), y(idx), 'marker', 'none', 'linewidth', 1.8); 

multiple vertical lines