【问题标题】:A vertical line in the plot [duplicate]图中的一条垂直线[重复]
【发布时间】:2017-06-09 01:28:44
【问题描述】:

我想为 y 的最大值画一条垂直线(x 接近 20 时),怎么做? (我的意思是从这个值(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]');

【问题讨论】:

标签: matlab plot matlab-figure


【解决方案1】:

使用hold on 保留之前的绘图。找到ymaximum 值和x 的值,其中y 最大,plot 垂直线如下:

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

给出:

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

如您所见,这使线条具有不同的颜色。如果您想要相同的颜色,请使用plot'Color' 属性,

【讨论】:

    【解决方案2】:

    你可以使用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); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 2014-06-08
      相关资源
      最近更新 更多