我想绘制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]');
答案 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;
给出:
即使您有多个最高分,这也有效。 这是另一个具有3个最大点的随机数据的输出:
如您所见,这会使线条具有不同的颜色。如果您想要相同的颜色,请使用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)
输出:
此代码绘制第一个最大值的垂直线。如果成功你将拥有多个相等的最大值,那么你应该使用这样的东西:
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);