*Mathematica* Q&A: Combining and Annotating Plots

August 10, 2011 — Andrew Moylan, Technical Communication & Strategy

Got questions about *Mathematica*? The Wolfram Blog has answers! We’ll regularly answer selected questions from users around the web. You can submit your question directly to the Q&A Team using this form.

Today’s question is from Herbert, a reader of this blog:

*How can I plot a function like sin(x) together with a relation like x = π?*

You can plot two or more functions together by giving a list as the first argument of a function like `Plot`:

But a relation like *x* = *π* is not a function, since it doesn’t define a single function value for each *x*.

There are a few different ways to combine a regular plot of a function with a visualization of a relation.

The particular relation *x* = *π* is a single vertical line. Any arrangement of horizontal and vertical lines can be produced using the `GridLines` option:

The setting `GridLines` → {`xlist`, `ylist`} draws grid lines at the specified lists of points on the *x*- and *y*-axes. You can also use `GridLinesStyle` to specify colors and styles. Here’s a version with multiple dashed grid lines:

Another way to get the vertical line *x* = *π* is to explicitly tell `Plot` to draw the line after it finishes plotting. You do this with the `Epilog` option:

The `Epilog` option can include any combination of *Mathematica*‘s graphics directives, such as colors and dashing:

Instead of manually drawing the line representing *x* = *π*, you can use `ContourPlot` to visualize the relation:

Using the function `Show`, you can combine the contour plot with a regular plot of sin(*x*):

(Note that `Show` uses the plot size and axes of its first argumentâ€”in this case, the regular plot of sin(*x*).)

The advantage of `ContourPlot` is that you can readily visualize more complicated relations than *x* = *π*. Here’s the relation sin(*x*) = sin(*y*):

You can use `Show` to combine the graphics produced by any of *Mathematica*‘s graphics functions. For example, `RegionPlot` can be used to visualize regions satisfying inequalities. Here’s a plot highlighting the region satisfying both sin(*x*) < *y* and *x* < *π*/2:

Between `Show`, options like `GridLines` and `Epilog`, and all of *Mathematica*‘s built-in graphics functions, you have a lot of flexibility when creating custom visualizations.

Click here to download this post as a Computable Document Format (CDF) file.

If you have a question you’d like answered in this blog, you can submit it to the Q&A Team using this form. For daily bite-sized *Mathematica* tips, follow our @MathematicaTip Twitter feed (or follow using RSS).

## 9 Comments

I find it easiest to use parametric plot for vertical lines:

ParametricPlot[{{x, Sin[x]}, {\[Pi], y}}, {x, 0, 10}, {y, -1, 1}]

Thanks. The use of ContourPlot is great ! I havent known that use of more complicated relation.

Thank you for sharing this post! Been wondering how to do this without having to resort to Show[Plot,Graphics[Line]]!

amazing work. i am impressed

Nice!

I hope the next edition of Mathematica’s Help system will include (links to?) such examples as on this blog and elsewhere – a real harnessing of the Mathematica developer/user ecosystem.

Very well set up. Even advanced mathematicians can bebefit from the lectures.

I see the simplest ways to go to the better understanding of mix elements in mathematica, as gridlines, colours, graphics, areas, dashed lines, the meaning of PI, intervals, styles, regions, and plot of several functions at the same time, etc. Thank You.

y=(1.1)^x+sinx

-10<=x<=10

-10<=x<=20,-10<=x<=30,-10<=x<=40 ,-10<=x<=50

draw a combining graph

y=(1.1)^x+sinx

-10<=x<=10

-10<=x<=20,-10<=x<=30,-10<=x<=40 ,-10<=x<=50