Cuadrículas adaptativas

Quiero usar líneas de cuadrícula para crear un efecto de papel cuadriculado milimétrico en un gráfico 2d, para mostrar cómo la función multivariable depende de 1 variable. Las escalas de las diferentes variables difieren mucho, por lo que mi enfoque ingenuo (que he usado antes) no parece funcionar.

Ejemplo de lo que tengo en este momento:

<< ErrorBarPlots`
Cmb[x_, y_, ex_, ey_] := {{N[x], N[y]}, ErrorBar[ex, ey]};
SetAttributes[Cmb, Listable];

ELP[x_, y_, ex_, ey_, name_] :=
 ErrorListPlot[
  Cmb[x, y, ex, ey],
  PlotRange -> FromTo[x, y],
  PlotLabel -> name,
  Joined -> True, Frame -> True, GridLines -> GetGrid,
  ImageSize -> {600}
 ]

AmbosFromTo (Quiero dejar un margen del 5% en el marco) yGetGrid no funcionan exactamente como quiero que lo hagan.

En algunos ejes, las variables difieren en muchos órdenes de 10. Y no quiero que un eje tenga muchos órdenes de 10 líneas de cuadrícula más que otro. Y lo más importante, quiero que las líneas de la cuadrícula se alineen con las garrapatas.

Data de muestra

ELP[
  {4124961/25000000, 27573001/100000000, 9162729/25000000, 44635761/
   100000000, 15737089/25000000, 829921/1562500, 4405801/4000000, 
   23068809/25000000, 329386201/100000000, 58079641/100000000},
  {1/10, 1/5, 3/10, 2/5, 3/5, 1/2, 1/2, 1/2, 1/2, 1/2},
  {2031/(250000 Sqrt[10]), 5251/(500000 Sqrt[10]), 3027/(
   250000 Sqrt[10]), 6681/(500000 Sqrt[10]), 3967/(250000 Sqrt[10]), 
   911/(62500 Sqrt[10]), 2099/(100000 Sqrt[10]), 4803/(
   250000 Sqrt[10]), 18149/(500000 Sqrt[10]), 7621/(500000 Sqrt[10])},
  {1/2000, 1/1000, 3/2000, 1/500, 3/1000, 1/400, 1/400, 1/400, 1/400, 
   1/400},
  "T2, m"
]

Daría como resultado:

Y mi ingenuo GetGrid, que funciona de alguna manera:

FromTo[x_, y_] := Module[{dx, dy},
   dx = (Max[x] - Min[x])*0.1;
   dy = (Max[y] - Min[y])*0.1;
   {{Min[x] - dx, Max[x] + dx}, {Min[y] - dy, Max[y] + dy}}];
GetGrid[min_, max_] := Module[{step, i},
  step = (max - min)/100;
  Table[
   {min + i*step,
    If[Equal[Mod[i, 10], 0],
     Directive[Gray, Thick, Opacity[0.5]],
     If[Equal[Mod[i, 5], 0],
      Directive[Gray, Opacity[0.5]],
      Directive[LightGray, Opacity[0.5]]
      ]]},
   {i, 1, 100}]
  ]
Pregunt

¿Cómo hacer que GridLines se alinee con ticks?

edit: con

GetTicks[x_, y_] := Module[{dx, dy},
   dx = (Max[x] - Min[x])*0.1;
   dy = (Max[y] - Min[y])*0.1;
   {
    Min[x] - dx + Table[i*dx*1.2, {i, 1, 9}],
    Min[y] - dy + Table[i*dy*1.2, {i, 1, 9}]
    }];

ELP[x_, y_, ex_, ey_, name_] :=
 ErrorListPlot[
  Cmb[x, y, ex, ey],
  PlotRange -> FromTo[x, y],
  PlotLabel -> name,
  Joined -> True, Frame -> True, GridLines -> GetGrid, 
  FrameTicks -> GetTicks[x, y],
  ImageSize -> {600},
  AspectRatio -> 1
  ]

Puedo conseguir

Y eso es mucho mejor. Pero me gustaría cambiar la cuadrícula y no las garrapatas.

edit: @Sjoerd C. de Vries

Su solución hace lo que quería archivar y funciona. También noté que si tomo los primeros 5 elementos de datos de muestra, entonces el gráfico será (los elementos se ordenan y se agrega la línea de regresión). @

Observe que el elemento más a la izquierda es como fuera de la red.

Respuestas a la pregunta(3)

Su respuesta a la pregunta