如何使用 LevelScheme 在 Mathematica 中创建子图?

2023-12-24

以 MATLAB 中生成的以下任意图形为例。基本想法是我有一个等高线图,我想在右侧的子图中展示从中选择的切片。 mma中有相当于subplot的吗?

我现在所做的工作是只绘制带有切片和箭头的等高线图以及分别的两个切片图,然后将它们放在乳胶中。不过,我希望能够在 mma 内做到这一点。我该怎么做呢?

我的一个想法是生成一个具有全垂直和半水平纵横比的等高线图,两个图具有半垂直和半水平纵横比,然后使用GraphicsGrid将它们对齐。但这仍然给我提供了列表形式的图,而不是复合图。这是唯一的方法还是有更好、更优雅的方法?


我知道Multipanel in 等级方案 http://wnsl.physics.yale.edu/levelscheme/也许可以让你做你想做的事 - 但我对此没有太多经验,并且文档中的示例相当稀疏。 我已经粘贴了其中一个示例进入这个SO答案 https://stackoverflow.com/questions/5008267/vertical-alignment-of-plots-in-mathematica-via-graphicscolumn/5010829#5010829,所以看看那里,看看你的想法!


这是我的尝试GraphicsGrid。 那件事Multipanel让你做但是GraphicsGrid不 是让您使用不同的列/行大小。 这意味着我很难以编程方式绘制箭头,而是使用“绘图工具”面板手动绘制它们(:D)

With[{yslice1 = .5, yslice2 = -.8},
 GraphicsGrid[
  {{DensityPlot[Sin[15 x y], {x, -1, 1}, {y, -1, 1}, 
     ColorFunction -> "PlumColors", AspectRatio -> 2,
     Epilog -> {Dashed, White, Line[{{-1, yslice1}, {1, yslice1}}], 
       Line[{{-1, yslice2}, {1, yslice2}}]}],
    Plot[Sin[15 x yslice1], {x, -1, 1}, Axes -> False, Frame -> True]},
   {SpanFromAbove,
    Plot[Sin[15 x yslice2], {x, -1, 1}, Axes -> False, 
     Frame -> True]}},
  Spacings -> {Scaled[0.2], Scaled[0.0]}]]

Edit:

这是同样的事情使用LevelScheme,注意框架对齐。 应该可以添加箭头 - 因为LevelScheme有很多新的箭头指令 - 但我会将其作为家庭作业问题!

<< "LevelScheme`"
{yslice1 = .5, yslice2 = -.8};
Figure[{
  SetOptions[Multipanel, 
   ShowTickLabels -> {True, False, False, True}, Background -> Wheat,
   PanelLetterFontSize -> 10, Margin -> {{40, 40}, {40, 0}}],
  Multipanel[{{0, 1}, {0, 1}}, {2, 2},
   XPlotRanges -> {-1, 1}, YPlotRanges -> {-1, 1},
   XFrameLabels -> textit["x"], YFrameLabels -> textit["y"],
   TickFontSize -> 10, XFrameTicks -> LinTicks[-1, 1, .5, 4], 
   YFrameTicks -> LinTicks[-1, 1, .5, 4],
   BufferL -> 1.5, BufferB -> 3, Order -> Vertical,
   XPanelSizes -> {1, 1}, XGapSizes -> 0.25, YGapSizes -> 0.2],
  FigurePanel[{1, 2}], 
  RawGraphics[
   Plot[Sin[15 x yslice1], {x, -1, 1}, Axes -> False, Frame -> True]],
  FigurePanel[{2, 2}], 
  RawGraphics[
   Plot[Sin[15 x yslice2], {x, -1, 1}, Axes -> False, Frame -> True]],
  FigurePanel[{2, 1}, PanelAdjustments -> {{0, 0}, {0, +1.2}}],
  RawGraphics[
   DensityPlot[Sin[15 x y], {x, -1, 1}, {y, -1, 1}, 
    ColorFunction -> "PlumColors", AspectRatio -> 2],
   Graphics[{Dashed, Thick, White, 
     Line[{{-1, yslice1}, {1, yslice1}}], 
     Line[{{-1, yslice2}, {1, yslice2}}]}]]},
 PlotRange -> {{0, 1}, {0, 1}}, ImageSize -> 2*72*{5, 3}
 ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 LevelScheme 在 Mathematica 中创建子图? 的相关文章

随机推荐