2

How would I plot the PDF (probability density function) of WeibullDistribution[1/5, 50], WeibullDistribution[1/4, 40], WeibullDistribution[1/3, 30] and WeibullDistribution[1/2, 20] in the same graph?

Verbeia
  • 34,233
  • 9
  • 109
  • 224
Chris
  • 883
  • 4
  • 9
  • 11

2 Answers2

8

Here is a simple way. The Evaluate is needed to ensure the line colors are different (see this question for an explanation of this).

Plot[Evaluate[
  PDF[WeibullDistribution[1/#, 10 #], x] & /@ Range[2, 5]], {x, 0.1, 5}]

enter image description here

As noted in the documentation, Plot and related functions quite happily draw multiple lines if they are given a list of functions (or data in the case of ListPlot and friends) as their first argument.

Notice the use of Map (/@) and a pure function to avoid having to type out the WeibullDistribution bit of the code multiple times. (This page in the documentation will be useful in this regard.)

Verbeia
  • 34,233
  • 9
  • 109
  • 224
  • Thank you for the link to the Map documentation, that is very useful! In this case you used "#" for both parameters. But, let's say I would want to map 1 list of values to the first parameter, and one to the second parameter, how would I do this? – Chris May 01 '12 at 01:05
  • @Chris You should look up Apply (@@) and apply at level 1 (@@@). A simple example which you can extend to your case is the following: Clear[f];f[#1, #2] & @@@ Transpose[{Range[5], Range[6, 10]}] – rm -rf May 01 '12 at 01:10
  • @Chris: Also have a look at MapThread. But this is really a separate question. – Verbeia May 01 '12 at 01:11
4

Another way to write Verbeia's code:

Plot[#, {x, 0.1, 5}] & @
  Array[PDF[WeibullDistribution[1/#, 10 #], x] &, 4, 2]
Mr.Wizard
  • 271,378
  • 34
  • 587
  • 1,371