Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am new to mathematica and i was wondering if someone could help me to plot some data;

This is my data that I need to use:

time  = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 16};
tsh = {2.1, 1.2, .3, .25, .2, .2, .15, .1, .05, .05, .1, .1};
t3 = {.5, .6, .7, .85, .75, .9, 1, 1.25, 1.5, 1.75, 1.7, 1.6};
t4 = {.25, .35, .4, .5, .6, .65, .6, .7, .9, .75, 1.1, .95};

I know how to plot some basic data but I began to struggle when I have been asked to incorporate all three data sets into one plot. They differ by the units assigned;

For example, time in "time/weeks", tsh in "arbitrary units / ml", t3 in "ng/ml^-1" and t4 in "microgram / ml^-1".

What I need to do is to plot tsh, t3 and t4on same plot and I can't seem to find a way :S

I would also appreciate if someone could explain how to carry out the unit conversion using Mathematica if that's possible;

share|improve this question
    
Welcome to Mathematica.SE! I suggest the following: 1) As you receive help, try to give it too, by answering questions in your area of expertise. 2) Take the tour! 3) When you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge. Also, please remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign! – Michael E2 Jan 13 at 2:34

TemporalData is your friend:

time = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 16};
tsh = {2.1, 1.2, .3, .25, .2, .2, .15, .1, .05, .05, .1, .1};
t3 = {.5, .6, .7, .85, .75, .9, 1, 1.25, 1.5, 1.75, 1.7, 1.6};
t4 = {.25, .35, .4, .5, .6, .65, .6, .7, .9, .75, 1.1, .95};

td = TemporalData[{tsh, t3, t4},{time}]

ListLinePlot[td,
    PlotLegends ->
    {
     "tsh arbitrary units/ml"
    ,"t3 ng/ml^-1"
    ,"t4 microgram/ml^-1"
    }
    ,AxesLabel->{"time (weeks)", "concentration"}
]

TemporalData Plot

share|improve this answer
    
beat me to it. :) – rcollyer Jan 13 at 2:45

Is this adequate?

time = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 16};
tsh = {2.1, 1.2, .3, .25, .2, .2, .15, .1, .05, .05, .1, .1};
t3 = {.5, .6, .7, .85, .75, .9, 1, 1.25, 1.5, 1.75, 1.7, 1.6};
t4 = {.25, .35, .4, .5, .6, .65, .6, .7, .9, .75, 1.1, .95};
ListPlot[{Transpose[{time, tsh}], Transpose[{time, t3}], Transpose[{time, t4}]},
  PlotLegends -> {"tsh arbitrary units/ml", "t3 ng/ml^-1", 
    "t4 microgram/ml^-1"}, AxesLabel->{"time (weeks)", "concentration"}]

enter image description here

This code didn't do any unit conversion, partly because you had simple lists of coefficients without any units attached and partly because all your numbers were similar enough that any unit conversion could be pushed off into the plot legend for the reader to make sense of. If your t3 numbers, for example, had been 0.0001 to 0.0002 then it would have required some scaling of the numbers to get all the plots to show large enough variation to be understandable. Sometimes people will ask why they can't have three different axes, all scaled differently, etc. There is no upper bound on how much stuff people want to magically happen in graphics. It is often fairly quick and easy to get some sort of graphic and then need to spend ten or a hundred times as much work to try to get the graphics to appear (almost) exactly the way that someone wants.

If you need more information about handling some particular bit of Mathematica for this then just leave a question in the comments and someone might be able to give you a tip to get you started.

share|improve this answer

There are many ways to do this. I have voted for the TemporalData approach. I present this just to illustrate relabelling ticks. I have also corrected the units to match concentrations for TSH (thyroid stimulating hormone), T3 (triodothyronine ) and T4(thyroxine),e.g."ng/ml^-1" is "ng.ml" but should be either "ng/mL" or "ng.mL^(-1)" etc.

ListPlot[{tsh, t3, t4}, Frame -> True, Joined -> True, 
 FrameTicks -> MapIndexed[{#2[[1]], #1} &, time], 
 FrameLabel -> {"Weeks", "Concentration"}, 
 PlotLegends -> {"TSH (U/L)", 
   "T3 (ng\[CenterDot]\!\(\*SuperscriptBox[\(mL\), \(-1\)]\))", 
   "T4 (\[Mu]g\[CenterDot]\!\(\*SuperscriptBox[\(mL\), \(-1\)]\))"}]

enter image description here

Nice illustration of presumably of effect of thyroid hormone replacement for hypothyroidism. Reference limits for various components could be added and color coded, e.g. using GridLines or by adding lines.

share|improve this answer

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.