DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

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

Solved!
Go to solution

Hello,

 

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).

 

TW_Test_0-1702049883088.png

 

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

TW_Test_1-1702049969494.png

 

Thanks

0 Kudos
Message 1 of 3
(1,532 Views)
Solution
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.

 

AnJalpaka_0-1702388606581.png

 

Message 2 of 3
(1,485 Views)

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
(1,469 Views)