Wolfram mathematica 如何使用一对框架标签制作打印网格?

Wolfram mathematica 如何使用一对框架标签制作打印网格?,wolfram-mathematica,plot,levelscheme,Wolfram Mathematica,Plot,Levelscheme,在整个网格只有一个FrameLabel的情况下,创建打印的行/列/网格的最简单方法是什么 我需要类似的东西: p := ListPlot[RandomInteger[10, 5], Joined -> True, Axes -> False, Frame -> True, PlotRange -> {0, 11}, FrameLabel -> {"horizontal", None}, AspectRatio -> 1] GraphicsRow[

在整个网格只有一个FrameLabel的情况下,创建打印的行/列/网格的最简单方法是什么

我需要类似的东西:

p := ListPlot[RandomInteger[10, 5], Joined -> True, Axes -> False, 
  Frame -> True, PlotRange -> {0, 11}, 
  FrameLabel -> {"horizontal", None}, AspectRatio -> 1]

GraphicsRow[{Show[p, FrameLabel -> {"horizontal", "vertical"}], p, p}]
对于行格式,它可以有一个或多个水平标签,但只有一个垂直标签

要审议的问题:

  • 垂直比例必须与所有绘图相匹配,并且不得因标签过长或自动
    PlotRangePadding
    而损坏
  • 需要对打印间距进行良好的控制(并且允许调整大小!)(毕竟,这是删除冗余标签背后的动机之一)
  • 布局的总体空间效率。最大内容,最小(不必要)空白
编辑


我正在尝试能够稳健地创建打印就绪的图形,这需要大量调整大小。(因为导出的PDF通常与我在笔记本中看到的比例不同,并且必须具有可读但不超大的字体)

您已经知道如何通过
列表打印处理多个水平标签。
您可以使用
面板
获取单个标签。例如

p := ListPlot[RandomInteger[10, 5], Joined -> True, Axes -> False, 
Frame -> True, PlotRange -> {0, 11}, AspectRatio -> 1]

Panel[GraphicsRow[{p, p, p}], {"horizontal",Rotate["vertical", Pi/2]}, 
      {Bottom, Left}, Background -> White]

您还可以选择在
顶部
右侧
边缘添加标签。

您可以使用标签来实现所需的功能。下面是一个例子:

<< "LevelScheme`"
Figure[{
  Multipanel[{{0, 1}, {0, 1}}, {1, 3},
   XFrameLabels -> textit["x"], BufferB -> 3,
   YFrameLabels -> textit["Sinc(x)"], BufferL -> 3,
   TickFontSize -> 9,
   XGapSizes -> {0.1, 0.1},
   PanelLetterCorner -> {1, 1}
   ],
  FigurePanel[{1, 1}, PlotRange -> {{-1.6, -0.6}, {-0.5, 1}}],
  RawGraphics[Plot[Sinc[20 x], {x, -1.6, -0.6}]],

  FigurePanel[{1, 2}, PlotRange -> {{-0.5, 0.5}, {-0.5, 1}}],
  RawGraphics[Plot[Sinc[20 x], {x, -0.5, 0.5}]],

  FigurePanel[{1, 3}, PlotRange -> {{0.6, 1.6}, {-0.5, 1}}],
  RawGraphics[Plot[Sinc[20 x], {x, 0.6, 1.6}]]
  },
 PlotRange -> {{-0.1, 1.02}, {-0.12, 1.095}}]

编辑2

为了回答Wizard先生的评论,这里有一个用于
2x3
网格的空白模板

Figure[{Multipanel[{{0, 1}, {0, 1}}, {2, 3},
   XFrameTicks -> None,
   YFrameTicks -> None,
   XGapSizes -> {0.1, 0.1},
   YGapSizes -> {0.1}],
  FigurePanel[{1, 1}],
  FigurePanel[{1, 2}],
  FigurePanel[{1, 3}],
  FigurePanel[{2, 1}],
  FigurePanel[{2, 2}],
  FigurePanel[{2, 3}]
  }, PlotRange -> {{-0.01, 1.01}, {-0.01, 1.01}}]    

这里有一个扩展面板

Figure[{Multipanel[{{0, 1}, {0, 1}}, {2, 3},
   XFrameTicks -> None,
   YFrameTicks -> None,
   XGapSizes -> {0.1, 0.1},
   YGapSizes -> {0.1}],
  FigurePanel[{1, 1}, PanelAdjustments -> {{0, 0}, {1.1, 0}}],
  FigurePanel[{1, 2}],
  FigurePanel[{1, 3}],
  FigurePanel[{2, 2}, PanelAdjustments -> {{0, 1.1}, {0, 0}}]
  }, PlotRange -> {{-0.01, 1.01}, {-0.01, 1.01}}]

这里是我刚刚提出的一个选项。它的优点是简单

我更喜欢尤达的LevelScheme图的外观,假设这些也可以用于网格

p := ListPlot[RandomInteger[10, 5], Joined -> True, Axes -> False, 
  Frame -> True, PlotRange -> {0, 11}, AspectRatio -> 1]

gg = GraphicsGrid[{{p, p, p}, {p, p, p}, Graphics /@ Text /@ {"Left", "Center", "Right"}},
       Spacings -> 5, ItemAspectRatio -> {{1, 1, 0.15}}];

Labeled[gg, Rotate["vertical", Pi/2], Left]

也许您试图解决的问题的(图形)示例有助于理解您的问题needs@belisarius我发布的代码可以作为示例。尝试调整结果的大小,并查看间距如何与其余图形不成比例地变化。这使得创建打印就绪的图形变得困难。为了说明垂直缩放“不同步”可能会出现什么问题,请尝试
GraphicsRow[{Show[p,FrameLabel->{“水平”、“垂直”}],p,p}]
一个短命的答案(作者出于某种原因现在删除了该答案)建议使用
标记的
,这似乎很明显。遗憾的是,这不是很强的调整大小,考虑<代码>表[显示] [格子[{{p,p,p}}],旋转[样式[\\垂直],fOntHeal->“Times”],[\[PI],2 ],左],IIGISESIZ-> S],{S,{ 200, 500, 1000 }}[< /代码>。另一个(次要)问题是标签的居中(注意标签前面的
“\t”
)。Szabolcs,我在发布之前没有阅读这些评论。您的目标图形是否完全按比例缩放,就像光栅重采样一样?@Mr.Wizard,是的,我需要缩放“足够好”,如果不是完全按比例缩放。LevelScheme解决了我的大部分烦恼。(我不介意文本不按比例缩放,事实上这很好,因为我可以指定打印机点的大小。但我需要间隙/边距按比例缩放。)你的代码中有
Show[p]
而不是
p
的原因吗?@先生,我不假思索地从原始文件中剪切粘贴了下来。但现在你提到了……你能举一个3x2网格的例子,而不是一行三个吗?@Wizard先生:请看我的编辑。我忘记了,做了2x3,而不是3x2,但是方法是一样的。这就是我的意思,所以这是我的错误。“YODAR在第一个代码中添加了<代码>边距> {{ 0, 0 },{ 10, 0 } < /代码>。多面板< /代码>为我工作。“YODA”空白模板确实有助于显示您的方法的实用性。也感谢您的链接。垂直和水平标签的字体大小和字体系列似乎完全不同。可防止轴刻度标签不应像此处所做的那样显示为冗余。上面一行的水平标签可以删除,最右边2x2块的垂直标签也可以删除。@Sjoerd,第一个问题可以用传统形式解决,第二个问题我知道,这就是为什么我更喜欢yoda的解决方案。这只是一个快捷方式。
p := ListPlot[RandomInteger[10, 5], Joined -> True, Axes -> False, 
  Frame -> True, PlotRange -> {0, 11}, AspectRatio -> 1]

gg = GraphicsGrid[{{p, p, p}, {p, p, p}, Graphics /@ Text /@ {"Left", "Center", "Right"}},
       Spacings -> 5, ItemAspectRatio -> {{1, 1, 0.15}}];

Labeled[gg, Rotate["vertical", Pi/2], Left]