Dos ejes verticales en la misma parcela

Sep 11 2020

Con frecuencia, para un análisis de datos experimentales conveniente, es necesario presentar los resultados con dos ejes verticales en la misma parcela con diferente escala y distancia entre marcas.

Intenté encontrar soluciones a este problema, pero no hay formas adecuadas de hacerlo.

  1. Overlay[{ListLogLinearPlot[...], ListLogLinearPlot[...]}] no funciona correctamente y además no permite usarlo como plantilla.
  2. TwoAxisPlot no es apropiado debido a la necesidad de compatibilidad con el paquete CustomTicks.

// El paquete CustomTicks permite determinar con precisión la posición de LogTicks o LinTicks menores y mayores.

¿Hay otras formas de implementar esto?

Gracias por adelantado.

Aquí está el código.

Show[ListLogLinearPlot[data[[3]], PlotRange -> {{10^1.3, 10^6}, {738.35, 738.65}}, 
  PlotStyle -> {Orange, PointSize[0.015]}, Frame -> True, 
  FrameLabel -> {"Var_1, a.u.", "Var_2, a.u.", None, None},
  LabelStyle -> {FontSize -> 15, FontFamily -> "Helvetica", Black},
  FrameStyle -> Thickness[0.001], 
  FrameTicksStyle -> Thickness[0.001],
  FrameTicks -> {{LinTicks[CMj, CMn], None}, {LogTicks, None}}], 
 ImageSize -> 600]

Respuestas

3 valarmorghulis Sep 12 2020 at 13:47

Puede hacerlo combinando las dos parcelas usando CombinePlots

 ResourceFunction["CombinePlots"][
 Plot[x, {x, 0, 10}, Frame -> True, 
  FrameLabel -> {"common axis", "Scale-1", None, None}], 
 Plot[ Sin[x], {x, 0, 10}, Frame -> True, FrameStyle -> Red, 
  PlotStyle -> Red, 
  FrameLabel -> {"common axis", "Scale-2", None, None}], 
 "AxesSides" -> "TwoY"]

Actualizar

Ahora, suponga que tenemos datos que queremos representar con dos escalas diferentes, digamos que el factor de escala es f, entonces todavía podemos hacerlo de la siguiente manera

      ResourceFunction["CombinePlots"][
 ListLinePlot[Table[{x, 10 x}, {x, 0, 10}], Frame -> True, 
  PlotStyle -> Black, 
  FrameLabel -> {"common axis", "Scale-1", None, None}, 
  FrameStyle -> {Directive[{Blue, FontFamily -> "Times", 15}], 
    Directive[{Black, FontFamily -> "Times", 15}]}], 
 ListLinePlot[ Table[{x, f 10 x} /. f -> 0.1, {x, 0, 10}], 
  Frame -> True, PlotStyle -> None, 
  FrameLabel -> {"common axis", "Scale-2", None, None}, 
  FrameStyle -> Directive[{Red, FontFamily -> "Times", 15}]], 
 "AxesSides" -> "TwoY"]

aquí consideré que el factor de escala es f=1/10