Layout 通过GraphicsColumn在mathematica中垂直对齐绘图

Layout 通过GraphicsColumn在mathematica中垂直对齐绘图,layout,wolfram-mathematica,Layout,Wolfram Mathematica,使用Mathematica中的GraphicsColumn()将多个日期列表图合并到一列中,我遇到了一个恼人的问题。我需要它们正确对齐,因为它们在同一时期显示不同的时间序列,但结果是,每个绘图的帧大小会根据Y轴标签的长度自动调整大小。因此,将一个带有5位数标签的图与一个带有2位数标签的图相结合将完全危及垂直对齐。我尝试了一些调整(例如,通过ImageSize设置宽度或最大宽度),不幸的是,它们似乎都适用于整个图形的大小,而不是实际帧的大小。我似乎没有找到一种方法来控制框架本身的大小。有什么想法吗

使用Mathematica中的
GraphicsColumn()
将多个日期列表图合并到一列中,我遇到了一个恼人的问题。我需要它们正确对齐,因为它们在同一时期显示不同的时间序列,但结果是,每个绘图的帧大小会根据Y轴标签的长度自动调整大小。因此,将一个带有5位数标签的图与一个带有2位数标签的图相结合将完全危及垂直对齐。我尝试了一些调整(例如,通过ImageSize设置宽度或最大宽度),不幸的是,它们似乎都适用于整个图形的大小,而不是实际帧的大小。我似乎没有找到一种方法来控制框架本身的大小。有什么想法吗?

我想您应该设置ImagePadding选项:


图形柱[{
Plot[Sin[x],{x,0,2pi},ImagePadding->20,AxesLabel->{“x”,“very-very-looooong”},
Plot[Sin[x],{x,0,2pi},ImagePadding->20,AxesLabel->{x”,“shrt}] }]

我不确定如何标记图形,但如果您将该值设置得足够高以显示整个标签,则此方法应该可以工作。

您可以尝试使用Multipanel命令

以下是他们的文档和LevelSchemeExamples.nb中给出的示例:

Figure[
 {ScaledLabel[{0.5, 1}, "Lissajous curves", FontSize -> 18, Offset -> {0, 1}],
  Multipanel[{{0, 1}, {0, 1}}, {2, 2},
   XPlotRanges -> {{-1.5, 1.5}, {-Pi/2, 8*Pi + Pi/2}},
   YPlotRanges -> {-1.5, 1.5},
   XFrameLabels -> {textit["x"], textit["t"]}, BufferB -> 2.5,
   YFrameLabels -> textit["y"], BufferL -> 3,
   TickFontSize -> 10,
   XFrameTicks -> {LinTicks[-2, 2, 1, 5], LinTicks[-Pi, 9*Pi, Pi, 4, 
      TickLabelFunction -> (Rationalize[#/Pi]*Pi &)]},
   YFrameTicks -> LinTicks[-2, 2, 1, 5],
   XPanelSizes -> {1, 2.5}, XGapSizes -> {0.1},
   YPanelSizes -> {1, 1}, YGapSizes -> {0.1},
   Background -> Wheat, PanelLetterBackground -> Wheat
   ],

  FigurePanel[{1, 1}],
  RawGraphics[ParametricPlot[{Cos[1*t], Cos[1*t - Pi/2]}, {t, 0, 2*Pi}]],

  FigurePanel[{1, 2}],
  RawGraphics[Plot[Cos[1*t], {t, 0, 8*Pi}], Dashing -> Automatic],
  RawGraphics[Plot[Cos[1*t - Pi/2], {t, 0, 8*Pi}]],

  FigurePanel[{2, 1}, PanelLetterBackground -> None],
  RawGraphics[ParametricPlot[{Cos[1*t], Cos[4*t - Pi/2]}, {t, 0, 2*Pi}]],

  FigurePanel[{2, 2}],
  RawGraphics[Plot[Cos[1*t], {t, 0, 8*Pi}], Dashing -> Automatic],
  RawGraphics[Plot[Cos[4*t - Pi/2], {t, 0, 8*Pi}]],
 },
 PlotRange -> {{-0.1, 1.1}, {-0.1, 1.1}}, 
 ImageSize -> 72*2*{3.6, 2.1}
]

你能发布你正在运行的代码吗?一般建议是,确保PlotRange、ImageSize和plot padding选项在所有绘图中是一致的,所有PlotRange、ImageSize,(现在)ImagePadding在所有绘图中都是相同的。另外,请注意,使用填充时应小心。如果将
10^5 Sin[x]
作为一个函数,您没有足够的空间来显示ImagePadding完成了任务,出于某种原因,我没有想到使用它,谢谢!
Figure[
 {ScaledLabel[{0.5, 1}, "Lissajous curves", FontSize -> 18, Offset -> {0, 1}],
  Multipanel[{{0, 1}, {0, 1}}, {2, 2},
   XPlotRanges -> {{-1.5, 1.5}, {-Pi/2, 8*Pi + Pi/2}},
   YPlotRanges -> {-1.5, 1.5},
   XFrameLabels -> {textit["x"], textit["t"]}, BufferB -> 2.5,
   YFrameLabels -> textit["y"], BufferL -> 3,
   TickFontSize -> 10,
   XFrameTicks -> {LinTicks[-2, 2, 1, 5], LinTicks[-Pi, 9*Pi, Pi, 4, 
      TickLabelFunction -> (Rationalize[#/Pi]*Pi &)]},
   YFrameTicks -> LinTicks[-2, 2, 1, 5],
   XPanelSizes -> {1, 2.5}, XGapSizes -> {0.1},
   YPanelSizes -> {1, 1}, YGapSizes -> {0.1},
   Background -> Wheat, PanelLetterBackground -> Wheat
   ],

  FigurePanel[{1, 1}],
  RawGraphics[ParametricPlot[{Cos[1*t], Cos[1*t - Pi/2]}, {t, 0, 2*Pi}]],

  FigurePanel[{1, 2}],
  RawGraphics[Plot[Cos[1*t], {t, 0, 8*Pi}], Dashing -> Automatic],
  RawGraphics[Plot[Cos[1*t - Pi/2], {t, 0, 8*Pi}]],

  FigurePanel[{2, 1}, PanelLetterBackground -> None],
  RawGraphics[ParametricPlot[{Cos[1*t], Cos[4*t - Pi/2]}, {t, 0, 2*Pi}]],

  FigurePanel[{2, 2}],
  RawGraphics[Plot[Cos[1*t], {t, 0, 8*Pi}], Dashing -> Automatic],
  RawGraphics[Plot[Cos[4*t - Pi/2], {t, 0, 8*Pi}]],
 },
 PlotRange -> {{-0.1, 1.1}, {-0.1, 1.1}}, 
 ImageSize -> 72*2*{3.6, 2.1}
]