绘制(横)坐标图

  • A+
所属分类:Mathematica绘图
摘要在这里记录一种使用mathematica来绘制坐标图的方法,记录一下Graphics,Line,Text的使用方式。

起因

写文档的时候想画个图,手头没什么工具,就想着使用mathematica来画一个吧。我是想实现下面这种图像:

绘制(横)坐标图

实现方法

最开始想到了使用Plot这个函数来实现,画出x=0的图像,然后把坐标轴画出来:

  1. pt1 = Plot[0, {x, -70, 70},
  2.    Axes -> {True, False}, AxesStyle -> Thick,
  3.    Ticks -> {{-37.5, 12.5, 62.5}}, TicksStyle -> Directive["Label", 17]
  4.    ];
  5. text1 = Graphics[{Text[Style["1号量化器", Italic, 20], {0, 0.1}]}];
  6. Show[pt1, text1, PlotRange -> {{-70, 70}, {0, 0.7}}]

于是我们得到了下面的这种图像:

绘制(横)坐标图

注意:下面的方法比较好!

但是上面的方法有很多不方便的地方,特别要同时画多个的时候,最后还是使用了Graphics来实现的:

  1. CoordinateFunc[h_, x0_, x1_, x2_, start_, end_] :=
  2.  Module[{width0 = (end - start)/100, width1 = (end - start)/20},
  3.   (*h是y轴,x0,x1,x2分别是坐标上三个点*)
  4.   Graphics[{{Thick, Line[{{start, h}, {end, h}}]},
  5.     {Thick, Line[{{x0, h}, {x0, width0 + h}}]},
  6.     Text[Style[ToString[x0], 17], {x0, h - width1}],
  7.     {Thick, Line[{{x1, h}, {x1, width0 + h}}]},
  8.     Text[Style[ToString[x1], 17], {x1, h - width1}],
  9.     {Thick, Line[{{x2, h}, {x2, width0 + h}}]},
  10.     Text[Style[ToString[x2], 17], {x2, h - width1}]}]
  11.   ]

这样我们就可以同时画出多个横轴来:

  1. h0 = CoordinateFunc[20, -62.5, -12.5, 37.5, -100, 100];
  2. h1 = CoordinateFunc[0, -50, 0, 50, -100, 100];
  3. h2 = CoordinateFunc[-20, -37.5, 12.5, 62.5, -100, 100];
  4. Show[h0, h1, h2]
绘制(横)坐标图

如果要加上文字说明,也是可以接着在旁边进行添加的:

  1. h0 = CoordinateFunc[30, -62.5, -12.5, 37.5, -100, 100];
  2. h1 = CoordinateFunc[0, -50, 0, 50, -100, 100];
  3. h2 = CoordinateFunc[-30, -37.5, 12.5, 62.5, -100, 100];
  4. text0 = Graphics[{Text[Style["0号量化器", Italic, 14], {125, 30}]}];
  5. text1 = Graphics[{Text[Style["1号量化器", Italic, 14], {125, -30}]}];
  6. Show[h0, h1, h2, text0, text1]
绘制(横)坐标图
  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: