【问题标题】:Matlab How to Break Y-Axis and Put Infinity at TopMatlab如何打破Y轴并将无穷大放在顶部
【发布时间】:2015-06-27 20:45:50
【问题描述】:

我试图打破绘图的 y 轴并将 Infinity 作为我的顶点,但我似乎无法修改 y 轴标签。理想情况下,我也想摆脱打破情节的曲线〜线,而是使用双斜杠//,但我尝试在matlab文件交换中使用一堆中断轴函数,但我无法得到他们为我工作。但是,我真的也希望能够比较这两种方法的外观,所以我想看看这两种方法的外观。

我想将下图中的“600”替换为断轴上的“无限”.

我正在使用函数breakyaxis.m

这是我的代码:

close all;
clc;

figure
% Plot 
 hold on; plot([0 .2 .5 .8 1],[-10 0 50 100 300],'.','MarkerSize',10); %(:,exp_width)); hold on;
plot(.4,150,'+','MarkerSize',10,'MarkerFaceColor','black');
plot(1,600,'+','MarkerSize',10,'MarkerFaceColor','black'); % Set 600 as point where y value should really be infinity

breakyaxis([350 550]); % Break Axis
xlabel('X Axis'); ylabel('Y Axis');
set(gca,'yticklabel',sprintf('%10s',[num2str(-10) num2str(0) num2str(100) 'inf']));
hold off;

这是我现在的身材图片:

【问题讨论】:

  • 所以你想要一个“连续”的轴背景;即一直是白色,并且在 y 轴上只有一个 // 来显示中断?
  • 没关系,我的主要愿望是在顶部打印“infinity”而不是 600

标签: matlab graph plot annotations figures


【解决方案1】:

查看函数breakyaxis(在命令行窗口中输入edit breakyaxis)的代码,我们看到我们实际上可以使用一个名为breakInfo的输出参数调用该函数,这是一个包含一堆关于函数中创建的 4 个轴的信息。

名为highAxes 的轴是包含YTickLabel 600 的轴,您希望将其替换为“Infinity”。

因此,调用breakyaxis时分配一个输出如下:

breakInfo = breakyaxis([350 550]);

并添加这一行:

set(breakInfo.highAxes,'YTicklabel','Infinity')

情节如下所示:

【讨论】:

  • 这与使用 ylabels = get(gca,'ytick'); 有何不同? ylabels = num2cell(num2str(ylabels.'),2); ylabels([end]) = {'Infinity'};设置(gca,'yticklabel',ylabels);我需要这个来处理断轴。
  • 哦,那我误解了你的问题。我会删除我的答案。
猜你喜欢
  • 2022-12-30
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多