Multiple path plots in 3D
arzensekd
I have a question regarding multiple XY data. I have a X data ("pH") vs Y data in wave0. pH could be scaled from pH=3 to pH=8 in step of one. But, all of the data sets was measured at different parameters and I need to add another axis ("ionic strength") to observe the change due to this parameter.
What is the correct way to dealing with this problem and to plot points as paths in 3D?
And here is also the problem, that the ionic strength axis is not equally spaced!
Next, I have a a model which I can fit using a model function of ionic strength, but at different pH. In the end, I will have fitting results for each pH and I want to plot data as scatter and fits as lines using x-axis as pH and y-axis as ionic strength. Could you help me to write a procedure for plotting this example?
Thank you for help.
Best Regards
We hesitate to use the term "correct". I think that a good approach is to display a scatter plot from your data. To do that you need to determine how many Y data you have (say N points). You then create a triplet wave that has N rows, e.g.,
Make/N=((N),3) myTripletWave
Now load your data on myTripletWave so that values which you called 'Y' are loaded into column 2, your 'X' values in column 0 and your "ionic strength" in column 1. After you loaded the data you can display the wave as a scatter plot in Gizmo and if your Fit gives you a 2D surface you can add that to the same graph so you can visually determine how well the model fits the data. The whole process is described in a video tutorial "Creating a Surface Plot from Scatter Data" that you can find here: (http://www.wavemetrics.com/products/igorpro/videotutorials.htm).
I hope this helps,
A.G.
WaveMetrics, Inc.
November 1, 2011 at 05:50 pm - Permalink
Maybe I was not clear enough, but my xy data sets are not the function of ionic strength. y measurements are function of x and these results I want to present at different ionic strengths just like in waterfall plots where could my ionic strength parametrize set of traces.
And for fitting function I mean same, but that here are the y values in function of ionic strength and not the pH. Fitting results have to be plotted as lines in 3d space.
Basically I have regular 2d plots, but I want to show them for different ionic strengths. My results are never function of both pH and ionic strength.
I hope that this time I was clear enough.
Thank you.
November 2, 2011 at 04:29 pm - Permalink
You might consider creating a fake waterfall plot like this:
If that's what you want, see the fake waterfall snippet.
November 2, 2011 at 06:32 pm - Permalink
I was thinking more like creating plot similar to attached plots.
Is the way to fill all the points in the tripletWave and create a scatter plot with Gizmo?
Is it possible to connect separate set of points with line?
How can I then show projection of lines on xy plane as countour plot?
Thank you for help.
Best regards
November 3, 2011 at 02:12 am - Permalink
If you just have multiple XY sets of data, there is nothing that keeps you from converting them to triplet waves. For example, suppose you have multiple XY pairs of waves: xwave_i and ywave_i (where i is an integer index) then, create a set of triplet waves triplet_i with:
triplet_i[][0]=xwave_i[p]
triplet_i[][1]=i // the index of the data set
triplet_i[][2]=ywave_i[p]
Now plot the triplets as scatter in Gizmo.
There is really no meaning to a contour plot in this context (simply because one of your parameters is an fake index). You can still provide an easy projection onto the XY plane (at minimum z) by duplicating your triplet wave and setting the third column to the minimum z value.
If this does not help I suggest you send an IGOR experiment containing sample data to support@wavemetrics.com.
A.G.
WaveMetrics, Inc.
November 8, 2011 at 12:51 pm - Permalink
I tried with triplet waves, then with interpolating of surface, and the results I attached bellow. At the end I made regular contour plot which I also attached.
Finally, I have some questions for which I think that have to be trivial.
In Gizmo I want to write greek letters and superscript/subscript writing in Gizmo axis labels. Particularly to write lambda and kappa letters but I didn't find how to do this.
Is it possible to make recreation macro for Gizmo plot and Contour plot or is any better way to do recreate this kind of plots?
Is it possible to include these two attached plots in one layer and save it as one common plot file like example on Igor Pro gallery page (http://www.wavemetrics.com/products/igorpro/gallery/user_perney.htm). In manual I found only for including graphs and tables.
I hope that there is not to many questions.
Best regards
November 9, 2011 at 11:59 am - Permalink
Use Gizmo Menu->Append Annotation. This allows you to create an annotation using standard IGOR code.
Close the Gizmo window or execute DoWindow/R to get a recreation macro.
Although it is possible I do not recommend making the composite in Gizmo. It is best if you use a Layout for this purpose.
A.G.
WaveMetrics, Inc.
November 9, 2011 at 01:31 pm - Permalink
Best regards
November 9, 2011 at 04:01 pm - Permalink
I have a related question while trying to generate a 3D plot. I have five 2D plots each consisting of several points with an error associated to them in addition of a curve fit, specified as a separate wave each. Total I have x and y wave, fitwave, and error bars waves. I want to generate a 3D plot for this 5 curves as is displayed in the attached curve. I was wondering what is the "best" way to deal with this issue. I have tried gizmo scattered plots, but I cant add the error bars to each point.
Thanks in advance
October 22, 2012 at 02:59 pm - Permalink
This is not trivial.
In order to display this in Gizmo you need to start by creating a triplet wave for each one of your curves. You would then add these to Gizmo as Path objects and obtain the basic curves. Next use the same triplet waves to create scatter objects that will be used to add error bars as markers at each data point. If your error bars have only delta-z variation you can, for example, choose a cylinder object as a marker.
Set the cylinder radii to a small value, e.g., 0.01 and leave the default height.
Open the scatter object properties and select Fixed Shape -> Object and from the Object menu select cylinder0.
Create a scale wave that has the same number of rows as your scatter data. For example, if your scatter triplet was in tripletWave1 use:
Duplicate/o tripletWave1, scale1
scale1=1
Now assign the delta-z values by modifying the scaling of the third column of the wave. Here I will use enoise as an example:
scale1[][2]=0.5+enoise(0.3)
Now return to the scatter dialog and set scale1 as the Marker Size Wave.
Since cylinders are drawing objects (not data objects) their scale is such that a cylinder of height 1 extends half the global delta-z of the plot. You can find (and modify) that value by choosing Axis Range from Gizmo menu.
If you are not sure how to accomplish the above feel free to send me an experiment with the relevant data and I'd help.
A.G.
WaveMetrics, Inc.
October 29, 2012 at 10:43 am - Permalink