Plotting legends in contourplot

In Mathematica 8.

Given this:

f[x_, y_, z_] := z – x^2 – y^2 (*relation among the variable f[x,y,z]==0*)
parameter = Range[0.1, 1, 0.1];(*choice of parameter values*)

I’m trying to plot the level curves

ContourPlot[Evaluate@Table[f[x, y, z] == 0, {z, parameter}], {x, -1, 1}, {y, -1,1}, PlotLegends -> parameter]

I have the next error message:

ContourPlot::optx: “Unknown option PlotLegends in ContourPlot[{0.1
-x^2-y^2==0,0.2 -x^2-y^2==0,0.3 -x^2-y^2==0,0.4 -x^2-y^2==0,0.5 -x^2-y^2==0,0.6 -x^2-y^2==0,0.7 -x^2-y^2==0,0.8 -x^2-y^2==0,0.9 -x^2-y^2==0,1. -x^2-y^2==0},{x,-1,1},{y,-1,1},PlotLegends->parameter]”

I tried using:


ContourPlot[Evaluate@Table[f[x, y, z] == 0,
{z, parameter}], {x, -1, 1}, {y, -1,1}, PlotLegends -> parameter] ]

what I should do?




I had no problem evaluating what you provided (screenshot). Which version of MMA are you using? Mine’s 10.
– seismatica
Jul 16 ’14 at 23:07



@seismatica His post started with [Mathematica 8] though the formatting may have made it difficult to read.
– Mr.Wizard♦
Jul 17 ’14 at 0:02


1 Answer


There are several problems here. First, you are mixing syntax for two different systems: the old (poor) Plot Legends package from version 8 and prior, and the new improved integrated legend functions in version 9 and later. The old package used the Option name PlotLegend while the new one uses PlotLegends, which I admit is confusing.

The second problem is that the Plot Legends package does not work for ContourPlot directly:

There are two ways to use the functions in this package to place a legend in a graphic: the first can only be used as an option to the built-in functions Plot, ListPlot and ListLinePlot, while the second can be applied to any graphic.

You would need to manually specify the legend:

Something like this generic example from the documentation:

DensityPlot[Sin[x y], {x, 0, π}, {y, 0, π}],
{ColorData[“LakeColors”][1 – #1] &, 10, ” 1″, “-1”, LegendPosition -> {1.1, -0.4}}

Frankly I wouldn’t bother however as almost no one likes the look of those legends. Instead you could roll your own and use Inset, or use Jens’s solution from:

Creating legends for plots with multiple lines?