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