From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.


Showing results for 
Search instead for 
Did you mean: 

Plot Two Channels Against Each Other (XY Plot) But Varying Time

Go to solution



I'm trying to plot two channels against each other and for the below example I have Pressure vs Position. This data trace is over an hour long and I would like to be able to see the change in the plot over time. What I have done in the past is manually copy the channels and remove the extra data and plot that stripped down data. Then I could get the first and last 5% of the data with a couple extra chunks in the middle. I'm hoping there is a graph setting that I am missing to easily zoom in on certain time ranges since there might be dozens of sections I would like to inspect closer.


The closest I have gotten in REPORT is the 3D Curve. I can set the z-axis (time) to 450-500 seconds and I can see the pressure applications, but it still shows all of the other data below 450 and above 500 seconds. Ideally I want to be able to change the z-axis and limit what data is shown so that I can just view that snippet of data on the XY plot (Pressure vs Position).




All data is still shown in the XY view, even when I limit the z-axis unfortunately.




0 Kudos
Message 1 of 3
Accepted by topic author TW_Test

Hello TW_Test,


I can reproduce the behavior you describe with the current and all older DIAdem versions. It is a very old bug for which I will create an entry in the bug database.


Fortunately, there is a workaround for you :-). The 3D axis system supports curve transformation. With a curve transformation, you can transform the input channels while plotting the curve so that they only contain your desired range of values. The original channels remain unchanged.


With the following curve transformation, the manual scaling of the Z-axis is used to find the desired value range. The values of the X, Y and Z channels are then written to the output channels.


Sub On3DCurveManualScaling(TransformContext)
  dim DataContext, ZBegin, ZEnd, ResultScope
  set DataContext = TransformContext.DataContext
  ZBegin = TransformContext.AxisSystem.AxisList.Z.Scaling.Begin
  ZEnd = TransformContext.AxisSystem.AxisList.Z.Scaling.End
  ResultScope = ChnEventDetectionWindow("", DataContext.ZChannelNumberIn, ZBegin, ZEnd, 0, 0)
  call ChnEventCopyValues(, DataContext.XChannelNumberIn, , DataContext.XChannelNumberOut, ResultScope)
  call ChnEventCopyValues(, DataContext.YChannelNumberIn, , DataContext.YChannelNumberOut, ResultScope)
  call ChnEventCopyValues(, DataContext.ZChannelNumberIn, , DataContext.ZChannelNumberOut, ResultScope)
End Sub



To ensure that the curve transformation is found, you must register the script as an user command. This can be done via the "User Commands" dialog or by script command. The ScriptCmdAdd command do this. It is called in the attached start script (Report3DManualScaling.vbs) to show the curve transformation.


The layout I have prepared shows the complete curve at the top left.
At the bottom left, the 3D axis system is provided with a manual scaling of the Z-axis (1.0 - 2.5). => Bug
At the bottom right is the 3D axis system with the curve transformation, which has manually scaled axes to show the section of the curve.
At the top right, the curve transformation is also used, whereby the Z-axis is scaled manually and the other axes are scaled automatically.




Message 2 of 3

Thank you AnJalpaka! That does exactly what I need it to. I have not used User Commands before but they seem powerful. I will look into them more.


I'm glad to hear that is a bug, because I couldn't figure out the benefit of showing all of the data at the limits of the z-axis in my case.


Thanks Again

0 Kudos
Message 3 of 3