Dua sumbu vertikal di plot yang sama

Sep 11 2020

Seringkali untuk memudahkan analisis data eksperimental, hasil dengan dua sumbu vertikal perlu disajikan dalam plot yang sama dengan skala dan jarak yang berbeda antar tick.

Saya telah mencoba menemukan solusi untuk masalah ini, tetapi tidak ada cara yang memadai untuk mewujudkannya.

  1. Overlay[{ListLogLinearPlot[...], ListLogLinearPlot[...]}] tidak berfungsi dengan baik dan juga tidak memungkinkan untuk menggunakannya seperti template.
  2. TwoAxisPlot tidak sesuai karena perlu kompatibilitas dengan paket CustomTicks.

// Paket CustomTicks memungkinkan untuk menentukan secara akurat posisi LogTicks atau LinTicks minor dan mayor.

Apakah ada cara lain untuk menerapkan ini?

Terima kasih sebelumnya.

Ini kodenya.

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]

Jawaban

3 valarmorghulis Sep 12 2020 at 13:47

Anda dapat melakukannya dengan menggabungkan dua plot menggunakan 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"]

Memperbarui

Sekarang, asumsikan bahwa kita memiliki data yang ingin kita wakili dengan dua skala yang berbeda, misalkan faktor skalanya f, maka kita masih dapat melakukannya sebagai berikut

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

disini saya anggap faktor penskalaannya f=1/10