wolfram vectores tabla poner mathematica intervalos grafico graficar graficador funciones escala ejes datos como wolfram-mathematica plot levelscheme

wolfram-mathematica - vectores - wolfram graficador de funciones



¿Cómo hacer una grilla de parcelas con un solo par de FrameLabels? (3)

¿Cuál es la forma más simple de crear una fila / columna / grilla de parcelas, con toda la grilla teniendo un solo FrameLabel?

Necesito algo similar a esto:

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}]

Para un formato de fila, podría tener una o varias etiquetas horizontales, pero solo una vertical.

Problemas a considerar:

  • La escala vertical debe coincidir con todos los gráficos, y no debe arruinarse, por ejemplo, con una etiqueta demasiado larga o PlotRangePadding automática.
  • Es necesario un control bueno (y tolerante al cambio de tamaño) del espaciado entre parcelas (después de todo, esta es una de las motivaciones detrás de la eliminación de las etiquetas redundantes)
  • Eficiencia espacial general del arreglo. Contenido máximo, espacios en blanco mínimos (innecesarios).

EDITAR

Intento poder crear sólidamente figuras listas para imprimir, lo que implica un gran cambio de tamaño. (Debido a que los archivos PDF exportados generalmente no tendrán las mismas proporciones que lo que veo en el notebook, y deben tener fuentes legibles pero no de gran tamaño)


Aquí hay una opción que acabo de armar. Su ventaja es que es simple.

Me gusta más el aspecto de Level Scheme de Yoda, suponiendo que también se pueden hacer para una grilla.

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]


Ya sabe cómo manejar múltiples etiquetas horizontales a través de ListPlot . Puede obtener etiquetas individuales mediante el Panel . Por ejemplo...

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]

Opcionalmente, también puede incluir etiquetas en Top bordes Top y Right .


Puede usar LevelScheme para lograr lo que quiere. Aquí hay un ejemplo:

<< "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}}]

LevelScheme le ofrece una gran flexibilidad en la disposición de su trama.

  • En lugar de nombrar las etiquetas comunes de la gráfica, puede mover la definición dentro de FigurePanel[] y controlar las etiquetas de cada una individualmente.
  • Puede establecer espacios entre parcelas tanto en las direcciones X e Y como cambiar los tamaños de cada panel, por ejemplo, el izquierdo puede ocupar 2/3 del espacio y los siguientes dos solo 1/6 del espacio cada uno .
  • Puede establecer rangos de parcela individuales, cambiar las etiquetas de marcas de marco para cada una, controlar qué lado del panel (superior / inferior / l / r) las etiquetas deben marcarse, cambiar la numeración de los paneles, etc.

El único inconveniente es que puede que tenga que luchar con él en algunos casos , pero, en general, me pareció un placer usarlo.

EDITAR

Aquí hay uno similar a tu ejemplo:

Figure[{ Multipanel[{{0, 1}, {0, 1}}, {1, 3}, YFrameLabels -> textit["Vertical"], BufferL -> 3, TickFontSize -> 9, XGapSizes -> {0.1, 0.1}, PanelLetterCorner -> {1, 1} ], FigurePanel[{1, 1}, PlotRange -> {{1, 10}, {0, 10}}], RawGraphics[ListLinePlot[RandomInteger[10, 10]]], FigurePanel[{1, 2}, PlotRange -> {{1, 10}, {0, 10}}, LabB -> textit["Horizontal"], BufferB -> 3], RawGraphics[ListLinePlot[RandomInteger[10, 10]]], FigurePanel[{1, 3}, PlotRange -> {{1, 10}, {0, 10}}], RawGraphics[ListLinePlot[RandomInteger[10, 10]]] }, PlotRange -> {{-0.1, 1.02}, {-0.2, 1.095}}]

EDIT 2

Para responder el comentario del Sr. Wizard, aquí hay una plantilla en blanco para una grilla de 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}}]

Y aquí hay uno con paneles extendidos

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}}]