Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Let us first define two positive definite matrices:

M1 = {{2, -6}, {4, 8}};
M2 = {{2, 3}, {4, 8}};

then set two points p1={-1,-1} and p2={1,1}. Finally we define an anisotropic distance function, namely:

d[q1_, q2_, M_] := Sqrt[(q1 - q2).M.(q1 - q2)]

When trying to plot the anisotropic Voronoi cells as follows:

Show[
 Graphics[Point[{p1, p2}]],
 RegionPlot[
  {
   d[{x, y}, p1, M1] < d[{x, y}, p2, M2],
   d[{x, y}, p1, M1] > d[{x, y}, p2, M2]
   },
  {x, -4, 4}, {y, -4, 4}
  ]
 ]

I obtain the following image:

Resulting image with unwanted mesh

My question is: How can I get rid of the underlying mesh, which is visible in this example?

Two remarks:

  1. Removing the points' plotting also removes the mesh.
  2. Adding something like Mesh->None to the RegionPlot doesn't help.

Edit:

It seems this problem is specific to Mac OS X. Here is the Options[RegionPlot] output:

{AlignmentPoint -> Center, AspectRatio -> 1, Axes -> False, 
 AxesLabel -> None, AxesOrigin -> Automatic, AxesStyle -> {}, 
 Background -> None, BaselinePosition -> Automatic, BaseStyle -> {}, 
 BoundaryStyle -> Automatic, ColorFunction -> Automatic, 
 ColorFunctionScaling -> True, ColorOutput -> Automatic, 
 ContentSelectable -> Automatic, CoordinatesToolOptions -> Automatic, 
 DisplayFunction :> $DisplayFunction, Epilog -> {}, 
 Evaluated -> Automatic, EvaluationMonitor -> None, 
 FormatType :> TraditionalForm, Frame -> True, FrameLabel -> None, 
 FrameStyle -> {}, FrameTicks -> Automatic, FrameTicksStyle -> {}, 
 GridLines -> None, GridLinesStyle -> {}, ImageMargins -> 0.`, 
 ImagePadding -> All, ImageSize -> Automatic, 
 ImageSizeRaw -> Automatic, LabelStyle -> {}, 
 MaxRecursion -> Automatic, Mesh -> None, 
 MeshFunctions -> {#1 &, #2 &}, MeshShading -> None, 
 MeshStyle -> Automatic, Method -> Automatic, 
 PerformanceGoal :> $PerformanceGoal, PlotLabel -> None, 
 PlotPoints -> Automatic, PlotRange -> Full, 
 PlotRangeClipping -> True, PlotRangePadding -> Automatic, 
 PlotRegion -> Automatic, PlotStyle -> Automatic, 
 PreserveImageOptions -> Automatic, Prolog -> {}, RotateLabel -> True,
  TextureCoordinateFunction -> Automatic, 
 TextureCoordinateScaling -> Automatic, Ticks -> Automatic, 
 TicksStyle -> {}, WorkingPrecision -> MachinePrecision}
share|improve this question
    
This mesh should not appear by default. Does it appear in other types of graphics, like DensityPlot for example? What OS and Mathematica version? –  Vitaliy Kaurov Feb 6 '12 at 12:11
1  
No mesh when I plot it on M 7.0.1.0, XP SP3 –  Chris Degnen Feb 6 '12 at 12:13
    
Just in case: could you please include the result of Options[RegionPlot] in your question? –  J. M. Feb 6 '12 at 12:13
1  
I get a mesh in Mathematica v8.0.4 on OS X Lion –  Heike Feb 6 '12 at 12:38
1  
I get a mesh on 8.0.4 on OS X Snow Leopard. –  Mike Honeychurch Feb 6 '12 at 21:33
show 3 more comments

3 Answers 3

up vote 21 down vote accepted

You are combining the images in the form

Show[Graphics[simplePrimitives], complicatedRegionPlot]

The options in the resulting figure are inherited from the first term, namely Graphics[simplePrimitives]. This does not include the "TransparentPolygonMesh" -> True generated by RegionPlot. You see the mesh as a result. If you combine things as follows:

Show[complicatedRegionPlot, Graphics[simplePrimitives]]

Then the resulting image will have the standard RegionPlot options and you'll no longer see the mesh.

I think the preferred way to do this, however, is to use Epilog, as in J.M.'s response.

share|improve this answer
2  
+1 for explaining why the mesh shows up in addition to fixing the problem –  Thies Heidecke Feb 6 '12 at 13:44
    
What OS are you using? I see no mesh at all. I wonder if the mesh is a Mac-only thing. –  Szabolcs Feb 6 '12 at 14:04
    
The simplest solution in some sense although the others work as well. –  Dror Feb 6 '12 at 14:49
    
@Szabolcs I used V8.0.4 on Mac OS X. I can confirm that V8.0.0 on Windows running in Virtual Machine displays no Mesh. That's odd. The inconsistency seems to be a bug to me. –  Mark McClure Feb 6 '12 at 15:21
    
Just a guess: Maybe graphics rendering is done differently on different platforms (or different modes are enabled by default), and some idiosyncrasy of the Mac rendering forced the developers to use this workaround. I noticed that @Heike's screenshot is not antialiased. Antialiasing is missing on Windows only when hardware accelerated rendering is used (this mode is automatically turned on e.g. if a Polygon with different VertexColors is included, but it's usually off) –  Szabolcs Feb 6 '12 at 15:42
add comment

RegionPlot[{d[{x, y}, p1, M1] < d[{x, y}, p2, M2], d[{x, y}, p1, M1] > d[{x, y}, p2, M2]}, {x, -4, 4}, {y, -4, 4}, Epilog -> Point[{p1, p2}]] seems to do what you want:

RegionPlot[] example

share|improve this answer
    
On that note: if you just want to tack on simple graphics primitives (e.g. Point[], Line[]) to your plots, the use of either the Prolog or Epilog options looks slightly neater than using Show[]. –  J. M. Feb 6 '12 at 13:58
add comment

You could use the (undocumented) option Method -> {"TransparentPolygonMesh" -> True} for this, e.g.

Show[Graphics[Point[{p1, p2}]], 
 RegionPlot[{d[{x, y}, p1, M1] < d[{x, y}, p2, M2], 
   d[{x, y}, p1, M1] > d[{x, y}, p2, M2]}, {x, -4, 4}, {y, -4, 4}],
 Method -> {"TransparentPolygonMesh" -> True}]

which produce

Mathematica graphics

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.