坐标轴 截断 matlab,Matlab,Mathematica中实现截断坐标轴效果的绘图

本文介绍了如何在Matlab和Mathematica中实现坐标轴截断效果的图形绘制,提供了相关的代码示例,包括使用Bzier曲线作为坐标轴分隔符以及调整坐标轴范围和比例的方法。
摘要由CSDN通过智能技术生成

背景

老有人问截断坐标轴效果的图如何绘制。这类图因为不常用、不常见,一般的具有科学绘图功能的软件也通常不作为默认的功能或函数提供。而用户自己实现起来则繁琐和技巧性强。

我搜索了先看mathematica, matlab, python里面是不是有现成的,发现还是需要第三方的代码。好在很快就找到了。——我对origin软件有种族歧视或者偏见,所以想到了也不去考虑。

代码和效果

在mathworks的文件分享里面有两个这样的代码资源, 一个对纵坐标轴作切分分割, 一个对横坐标轴作切分分割。它们的代码都可以下载。介绍性文字和用法,请自己到mathworks网站上阅读。

不注册下载的话,可以分别点下面的两个链接。顺便给出了两种源代码提供者原作者给出的效果图。

此外,原则上不接受免费答疑,您悲愤也没有用。使用过程中如果有小的问题请自行搞定。

代码1

代码2

代码3

第一部分,我觉得最出彩的地方主要是,用Bizer曲线作为坐标轴分隔符,以及Arrowheads函数选项的活用。但是用Column或Grid之类合并多个figure,并不见得多好;

data1 = { {1, 1.1}, {2, 1.5}, {3, 0.9}, {4, 2.3}, {5, 1.1}};

data2 = { {1, 1001.1}, {2, 1001.5}, {3, 1000.9}, {4, 1002.3}, {5, 1001.1}};

(*ListPlot[data1,PlotRange\[Rule]All,Joined\[Rule]True,Mesh\[Rule]\ Full,PlotStyle\[Rule]Red] ListPlot[data2,PlotRange\[Rule]All,Joined\[Rule]True,Mesh\[Rule]Full,\ PlotStyle\[Rule]Blue]*)

snip[pos_] :=

Arrowheads[{ {Automatic, pos, Graphics[{BezierCurve[{ {0, -(1/2)}, {1/2, 0}, {-(1/2), 0}, {0, 1/2}}]}]}}];

getMaxPadding[p_List] :=

Map[Max, (BorderDimensions@

Image[Show[#, LabelStyle -> White, Background -> White]] & /@

p)~Flatten~{ {3}, {2}}, {2}] + 1

p1 = ListPlot[data1, PlotRange -> All, Joined -> True, Mesh -> Full,

PlotS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值