Ask Your Question
1

Plotting Overlapping Curves

asked 2010-10-26 18:40:14 +0100

gt4431b gravatar image

updated 2010-10-26 18:51:10 +0100

Evgeny gravatar image

Stupid newbie question!

I want to be able to plot two or more functions on a single graph. For example, I wish to plot $x^2$ and $2^x$, say in red and blue, such that a person can readily see, with their eyes, where the two curves intersect.

Unfortunately, I can't figure out how to make this happen. It seems like it would be a common teaching device but how to make it work?

Any assistance welcomed!

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
4

answered 2010-10-26 18:48:23 +0100

gt4431b gravatar image

updated 2010-10-26 18:48:55 +0100

Okay, answering my own question, in case someone else got confused like I did:

p1 = plot(x^2,(x,0,5),rgbcolor=hue(0.4))
p2 = plot(2^x,(x,0,5),rgbcolor=hue(0.6))
show(p1+p2, axes=true)

Here the function of the '+' operator seems to mean "and" rather than "plus".

edit flag offensive delete link more
2

answered 2010-10-27 23:16:25 +0100

kcrisman gravatar image

You shouldn't even need the axes=True part, I think. If you look at

sage: plot?

you'll see that + is the standard way to add plots.

It sounds like you might want to plot things in a certain order of objects on top of each other; here, the zorder option should often work (though there might be some graphics primitives where it doesn't). Like so:

sage: P = plot(sin,0,pi,zorder=50)
sage: Q = plot(cos,0,pi,color='red',zorder=51)
sage: P+Q

Here, red is on top (like in a plot with no zorder)

sage: Q = plot(cos,0,pi,color='red',zorder=40) 
sage: P+Q

Here, blue is on top.

Note that the behavior without zorder set is sometimes a little enigmatic - I don't know whether P+Q and Q+P always plot the second one on top if you don't use zorder above, since for certain objects that doesn't seem to happen; for these plot types, apparently that does happen, though.

edit flag offensive delete link more

Comments

How to do this if I receive plots in a list and don't have the "first" plot to use as the left hand side of "+"? sum() doesn't work: complains about wrong types.

Rulatir gravatar imageRulatir ( 2022-10-31 00:28:32 +0100 )edit

This apparently does work. See this Sage cell doing sum([plot(x^n) for n in range(10)]), which I guess is what you are asking about. If you have an example that doesn't, probably start a new question for that.

kcrisman gravatar imagekcrisman ( 2022-12-02 01:11:06 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2010-10-26 18:40:14 +0100

Seen: 2,413 times

Last updated: Oct 27 '10