My question is motivated by the following discussion.
Smoothing ListContourPlot contours
I need to generate high-quality contour plots for some property generated on a non-rectangular grid. This is how my grid looks like:
As an example, let's just plot one contour:
data = Import["/path/to/file", "Table"];
density = data[[All, {1, 2, 4}]];
crd1 = {0., 1.196175};
crd2 = {0., -3.588525};
cnvtAtoAU = 1.889726;
shift = ((crd1[[2]] - crd2[[2]])/2 - crd1[[2]])*cnvtAtoAU;
data = {# + {0, shift, 0, 0}} & /@ data //. {x_List} :> x;
cntrValue = 0.000006;
intOrder = 3;
pr = {{-7, 7}, {-11, 11}, {0, 1}};
density = data[[All, {1, 2, 4}]];
dencntr = ListContourPlot[density,
InterpolationOrder -> intOrder,
Contours -> {cntrValue},
PlotRange -> pr,
ContourShading -> None,
ContourStyle -> Black,
ImageSize -> 500,
AspectRatio -> 1.47,
MaxPlotPoints -> 150]
This produces the following output:
Observe that at first glance the plot looks OK, but at a closer look it has tiny distortions and artifacts that I want to get rid of. I am OK even if the solution does not perfectly coincide with the current curve as long as it is perfectly smooth. As I said, I need a high-quality plot for illustrative purpose.
I tried techniques mentioned in the link above. None of them worked for me. I tried playing with MaxPlotPoints
and InterpolationOrder
, no success. I also played with Interpolation
and splines (achieved nothing).
I was also thinking about transforming data to a different system of coordinates and interpolating it.
Any ideas?