多轴断裂

2024-03-01

我正在尝试在 Matlab 上创建一个具有多个轴中断的图(如下所示):

我尝试过使用类似的东西breakyaxis and breakaxis来自 Matlab 文件交换,但这些只允许一次中断,而不是多次。

有没有办法实现这个?


The NaN (Not a Number) 值可能是一件烦人的事情,但在某些情况下也是一件方便的事情。

当你绘制数据时,Matlab 会在每个没有值的数据点处留下空白(NaN)。所以原理就是插入这些NaN之间的数据集并告诉 Matlab 绘制全部数据。凡是有的地方Matlab都会自动留空NaN.

这是一个示例,因为您没有提供示例数据,所以我首先必须定义 3 个简短的数据集,类似于您图中的数据集:

%% // sample data sets
yf = @(x) 2*x+40+randi(7,size(x)) ;
x1 = 57:61 ; y1 = yf(x1) ;
x2 = 72:76 ; y2 = yf(x2) ;
x3 = 80:83 ; y3 = yf(x3) ;

这是经过编辑的答案,考虑了 Y 轴的中断。为了能够对数据集调用全局操作,我必须将它们重新组合成元胞数组或结构。结构方法将在不同的数据集上使用循环,而元胞数组允许使用cellfun来压缩代码。我选择了这种方法并使用cellfun广泛地。

所以第一步是将所有数据集放入元胞数组中

%% // have to group the data sets in a cell array or structure to implement global operations
xc = { x1 ; x2 ; x3 } ;
yc = { y1 ; y2 ; y3 } ;

现在是重的部分:

%// find the maximum vertical span of the datasets and the total span
maxVal = cellfun(@max,yc) ;
minVal = cellfun(@min,yc) ;
maxYspan  = max( maxVal-minVal ) ;
totalSpan = max(maxVal)-min(minVal) ;

%// find a sensible Y value to add between the datasets, not too wide but
%// enough to see a break`
yBreakIncrement = round( totalSpan / 10 ) ; %// adjust that if necessary
yTickIncrement = round( maxYspan /5 ) ;     %// adjust that if necessary

%% // rebuild the Y datasets 
%// value to substract to each data set to bring them together (including the break space)
setSubstract = [0 ; cumsum( (minVal(2:end)-maxVal(1:end-1))- yBreakIncrement )  ] ;
%// get 3 new data sets brought together
Yall = cellfun(@minus , yc , num2cell(setSubstract) , 'uni',0) ;
%// concatenate the data sets, inserting NaN in the middle
Yall = cellfun( @(a,b) cat(2,a,b) , Yall , repmat({NaN},length(yc),1) , 'uni',0) ;
Yall = cat( 2, Yall{:} ) ;
%// remove the last trailing NaN
Yall(end) = [] ;

%% // Build the Y labels
%// generate ticks that covers each interval
Y_tickpos = cellfun(@colon, num2cell(minVal), repmat({yTickIncrement},length(yc),1) , num2cell(maxVal) , 'uni',0) ;
%// generate the Y labels based the real Y values
Y_labels  = cellstr( num2str( cat(2, Y_tickpos{:} ).') ) ;   %'// ignore this comment
%// now adjust the actual position
Y_tickpos = cellfun(@minus , Y_tickpos , num2cell(setSubstract) , 'uni',0) ;
Y_tickpos = cat( 2, Y_tickpos{:} ) ;

%% // Build the X labels (and axis)
%// create a continuous index for the X axis
X = 1:length(Yall) ; 
X_labels = cellstr( num2str( cat(2, xc{:} ).') ) ;  %'// generate the X labels based the X values
X_tickpos = X(~isnan(Yall)) ;                       %// prepare a vector for the label positions

%% // Display
plot(X,Yall) %// plot as usual 

%// Set the labels at the chosen positions
set(gca, 'XTick' , X_tickpos , 'XTickLabel' , X_labels )
set(gca, 'YTick' , Y_tickpos , 'YTickLabel' , Y_labels )

That should give you something like:
axis break

希望足以让您开始。尝试使该原理适应您的数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多轴断裂 的相关文章

  • 基本矩阵错误?

    我试图通过扫描从相机拍摄的两个图像 检测图像中的特征 匹配它们 创建基本矩阵 使用相机内在函数计算基本矩阵 然后分解它以找到旋转和翻译 这是matlab代码 I1 rgb2gray imread 1 png I2 rgb2gray imre
  • 如何在matlab中使矩阵图平滑

    就像上图一样 怎样才能让画面更流畅呢 或者缩小y轴的范围 数据来自二维矩阵 然后我用plot data 请随意提出任何想法 平滑线条的一种方法涉及样本点之间数据的非线性插值 当你这样做时plot x y o http www mathwor
  • 使用网络计算机进行 Matlab 并行处理

    我熟悉matlabpool and parfor用法 但我仍然需要加快计算速度 我的 1GB 网络中有一台功能更强大的计算机 两台计算机都有 R2010b 并且具有相同的代码和路径 使用两台计算机进行并行计算的最简单方法是什么 我今天使用的
  • 使用 scipy.io 将 python pandas dataframe 转换为 matlab 结构

    我正在尝试使用 scipy io 将 pandas 数据帧保存到 matlab mat 文件 我有以下内容 array1 np array 1 2 3 array2 np array a b c array3 np array 1 01 2
  • matlab中简单正弦波的傅里叶变换

    我尝试显示简单正弦波的频谱 因为我们知道具有固定频率的单个正弦波必须在其频谱中出现峰值我编写了这段代码 但我无法得到这个峰值我的代码中有什么问题 clc nsteps 200 number of signal elements in tim
  • 在matlab中融合2个以上的图像

    在 MATLAB 中 如何融合两个以上的图像 例如 我想要做什么imfuse但对于超过 2 个图像 使用两张图像 这是我的代码 A imread file1 jpg B imread file2 jpg C imfuse A B blend
  • Python 中 Matlab 'fscanf' 的等价物是什么?

    Matlab函数fscanf 似乎很强大 python 或numpy 中是否有相同的等效项 具体来说 我想从文件中读取矩阵 但我不想迭代每一行来读取矩阵 类似的东西 来自 matlab 用于读取 2D 1000x1000 矩阵 matrix
  • Matlab的uicontrol在Octave中的实现?

    我正在尝试在 Octave 中运行我们实验室中使用的图形程序的 m Matlab 代码 Octave 告诉我代码中使用的函数 uicontrol 没有定义 经过一番搜索 我发现 JHandles 包有一个 uicontrol GUI 功能的
  • 覆盖 y 轴刻度标签而不影响 pyplot 中的图形形状

    我想手动覆盖 y 轴刻度标签而不影响原始图 例如 我如何在不影响原始绘图形状的情况下显示 y 轴刻度标签 1 10 100 1000 10000 即仍然显示完美的二次曲线 import numpy as np import pylab as
  • iOS绘图3D图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在搜索一个可以帮助我绘制 3D 图表的库 我想要类似的东西这一页 http www math uri edu bkaskosz fla
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac
  • 当 MATLAB 变得非常非常忙时,如何中断它?

    我正在运行一个长时间的模拟MATLAB http en wikipedia org wiki MATLAB我意识到我需要停下来重新运行 然而 MATLAB 确实对这种计算很感兴趣 并且它停止了响应 如何在不终止 MATLAB 的情况下中断此
  • 用热图绘制 2 个变量

    我在 python 3 上 有两个变量 x 和 y 其中 x 的范围从 1 到 5 y 的范围从 0 03 到 0 7 然后我有一个方法 它接受 x 和 y 并生成标量数 我想创建一个热图类型图 其中 x 为 x 轴 y 为 y 轴 并使用
  • Python 中的 eig(a,b) 给出错误“需要 1 个位置参数,但给出了 2 个”

    根据https docs scipy org doc numpy 1 15 0 user numpy for matlab users html https docs scipy org doc numpy 1 15 0 user nump
  • OpenCV功能类似于matlab的“查找”

    我正在寻找 openCV 中的一个函数来帮助我制作图像蒙版 例如在 MATLAB 中 B A or B 零 大小 A B A 10 c 有些功能可以让你通过mask向他们提出论据 按照您描述的方式创建面具 我认为您正在追求Cmp 或 Cmp
  • MATLAB:MEX 矩阵除法给出的结果与 m 文件不同

    我使用 MATLAB 的编码器工具创建了矩阵指数函数的 MEX 版本 以在另一组函数中使用 问题是 MEX 版本给出的结果与原始 m 文件不同 经过调试 我认为这是因为MEX文件和m文件没有做相同的矩阵除法 或者 MEX 文件首先就有问题
  • 通过 h5py 将 matlab v7.3 文件读入 python numpy 数组列表

    我知道以前已经有人问过这个问题 但在我看来 仍然没有答案可以解释正在发生的事情 并且不适用于我的情况 我有一个 matlab v7 3 文件 其结构如下 gt rank lt 1x454 cell gt gt each element is
  • Matlab 中的多行匿名函数? [复制]

    这个问题在这里已经有答案了 是否可以在 Matlab 中创建多行匿名函数 没有合适的例子在文档中 http www mathworks com help matlab matlab prog anonymous functions html
  • 在每次迭代中使用 for 循环的索引命名图像

    我正在使用 MATLAB 进行图像处理项目 我使用 for 循环在每次循环迭代时生成某种图像数据 图像大小不同 我的问题是如何阻止它在下一次迭代中覆盖图像 Img i j data 理想情况下我希望它有 Img 1 data for 1st
  • 在 matplotlib 中使用一组标量值对球体表面着色

    我对 matplotlib 相当陌生 这也是我的第一个问题 我试图代表脑电图记录的头皮表面电位 到目前为止 我已经有了一个球体投影的二维图形 它是使用轮廓生成的 并且几乎可以归结为普通的热图 有什么方法可以在半个球体上完成此操作吗 即生成一

随机推荐

  • 为什么我们必须在 Django 设置中提供 WSGI_APPLICATION 变量

    我是一名 Django 开发新手 所以如果这个问题没有意义 请原谅我 我们提供一个变量叫做WSGI APPLICATION在 django 设置中ROOT URLCONF和一些其他设置变量 我们也在 wsgi py 文件中提供设置文件路径
  • NSTableView 中 NSTextFieldCell 的自定义字段编辑器

    我有一个习惯NSTableView子类充满了几个自定义NSTextFieldCell子类 我希望能够使用箭头键更改编辑的单元格 我可以通过创建自定义字段编辑器 通过子类化NSTextView 并从窗口委托返回它 如下所示 id window
  • Netty 4. ByteToMessageCodec之后的并行处理

    If a NioEventLoopGroup被用作workerGroup 之后的消息ByteToMessageDecoder处理程序 对于单个连接 通过以下处理程序以顺序 单线程 方式处理NioEventLoop 是否有可能让它们在之后由另
  • 为跨浏览器功能设置选择菜单样式的正确方法[重复]

    这个问题在这里已经有答案了 I came across this problem with a select menu it s about styling it with the help of CSS Jquery By now I m
  • 如何在Matlab中向线图添加箭头?

    我想在 Matlab 中的线条图中添加箭头来说明流程 理想情况下 箭头应位于指向该线方向的线上 这可能吗 为了在 Matlab 中绘制箭头 请使用名为的文件交换免费包arrow m http www mathworks com matlab
  • Mac OSX Lion DNS 查找顺序 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 升级到 Mac OSX Lion 后 我发现 etc hosts 不再首先查找名称解析 这会导致一些副作用 例如 etc hosts 中的条目解析速度
  • 在 D3.js 中为多个小条形图下的轴绘制单独的域

    我的目的是在一个具有不同域的 svg 中绘制多个小条形图 建立在这个例子 http bl ocks org officeofjane 7315455 我遇到的主要问题似乎是从输出中提取特定键的值的问题d3 nest并定义每个密钥对应的域 绘
  • Django 管理员:当我单击外键旁边的添加按钮(+)时想要预填充一些字段

    在 Django 管理中 当我单击下拉列表旁边的添加 按钮时 我想使用当前记录中的数据来填充外键记录的字段 例如 我正在查看一个实例X其中有字段a b and c和一个外键Y Y还有字段a b and c 所以当我单击 添加 按钮时X例如
  • 正则表达式:搜索动词词根

    我已经看到了按词尾对动词进行分类的结果 但我想使用正则表达式来查找西班牙语中常规动词的动词词根 我正在使用这个奇特的网站 http regexpal com http regexpal com 我怀疑这可能与我的最终用途不兼容 但将是一个很
  • 如何安排Makefile来编译具有多个.c文件的内核模块?

    如何安排Makefile来编译具有多个 c文件的内核模块 这是我当前的 Makefile 它是由自动生成的KDevelop http www kdevelop org TARGET nlb driver OBJS nlb driver o
  • 如何在 Mongoose 数组中的每个值前面添加一个字符串?

    假设我有一个这样的文档集合 name Bob listIDs 1c2f 32a1 0ebf name Meg listIDs a844 8132 b246 如何在每个文档的 listIDs 中的每个值前面添加字符串 0000 例如 name
  • 基本 Springboot 应用程序抛出 NullPointerException

    我在使用 SpringBoot 时遇到问题 我的控制器中有一个异常处理程序 每次我抛出一个被控制器捕获的异常时 它都会向客户端返回正确的值 但它也会在日志中放入大量 NPE 这主要是一种烦恼 但日志中的许多无关紧要的错误可能会掩盖真正的问题
  • 在正则表达式中将一组模式中的模式列入受控多次出现的白名单

    我希望以下示例返回匹配项 I like foob ar com 我喜欢 google com 和foob ar com I like foob ar com和 google com 我喜欢 foobargoogle com 和 google
  • 如何检查sd卡目录中是否存在文件

    我想检查 android SD 卡中是否存在给定的文件 我正在尝试使用绝对路径创建文件并检查file exists 但它不起作用 该文件的 URL 是 file mnt sdcard book1 page2 html 并且该文件确实存在 但
  • 如何在另一个滚动视图中滚动ListView

    我有个问题 我有一个布局 其滚动视图位于三个列表视图 A B C 上 我想要滚动孔布局以及滚动每个列表视图 Problem 当布局滚动时 列表视图不会滚动 如果我删除滚动布局 则列表会滚动 但布局不会滚动 可能的解决方案是什么 使用以下方法
  • AWK 关联数组、映射或哈希映射

    假设我有两个文件 文件1 地图 txt 1 178246 2 289789 3 384275 4 869282 文件2 关系 txt 178246 289789 384275 178246 384275 869282 预期结果是 1 2 3
  • 如何使用组类型查看主题成员

    有一个默认值ClusterRoleBinding named cluster admin 当我跑步时kubectl get clusterrolebindings cluster admin o yaml我得到 apiVersion rba
  • Python中%的意义是什么[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我对编程语言和 Python 都是全新的 尽管我已经阅读了 3 个简短的教程来解释它 但我仍然无法理解 的意义 有人能分解一下 在这段代码
  • EJB中@Resource注解的mappedName和lookup属性有什么区别?

    我对以下两个属性感到困惑 Resource注解 Java 文档说 映射名称 该资源应映射到的产品特定名称 该资源的名称 由 name 元素定义或默认 是使用该资源的应用程序组件的本地名称 它是 JNDI java comp env 命名空间
  • 多轴断裂

    我正在尝试在 Matlab 上创建一个具有多个轴中断的图 如下所示 我尝试过使用类似的东西breakyaxis and breakaxis来自 Matlab 文件交换 但这些只允许一次中断 而不是多次 有没有办法实现这个 The NaN N