Select plot by mouse in a multi-plot graph

Hello
I'm using LV 8.5 and have a question using a waveform graph. I have multiple plots (up to about 300) in this graph and most of them will have approximately the same waveform but some will have a totally different -> the user needs to identify these plots (get the name of it when moving the mouse over it for example).
Is there a possibility to identify a specific plot in a multiplot graph?
Thanks a lot for your answer!
Rico

Hello and thanks for your answer!
Unfortunately this solution does not work, I add a picture to show the problem. If the user has to click through all plots (1500...) to get ther right one, he needs really a lot of time!
Message Edited by Osiris81 on 04-17-2008 09:45 AM
Attachments:
plotExample1.jpg ‏263 KB

Similar Messages

  • Express XY Graph Multi-plot Cursor point

    Hi,
           In mixed signal graph >> Property >> Cursors Tab >> Enable Allow dragging here if we select Multi-plot, it will show X scale and all Y-scale value in Cursor legend.
    How can I get these same options in Express XY Graph?
    Sivaraj M.S
    CLD

    You need to use a property node and find the curser position and then plot those points in a seperate xy plot (only it will be one point instead of an array). You will still have to plot it as an array of one point.
    Tim
    Johnson Controls
    Holland Michigan

  • XY graph - multi-plot problem

    Hi,
    I'm experiencing a problem using a multi-plot xy graph. I have to display 2 plots together, and make them appear and disappear many times during the program running.
    But when I close LV and restart it, the second plot (plot1) doesn't appear, and also I lose all the properties I've set for it (name, color,...). If I don't shut down LV everything works well.
    What can I do?

    Stefano Moret wrote:
    When you write about use property nodes, I'm using the "visible" one.
    Your suggestion is to try also to set all the properties from there? Maybe it's a good idea, I'll try.
    Here are some code snippets I used once to initialize the graph and later on change legend entries depending on user selection.
    You can also change the way plots are represented during run time. You always have to start with ActPlot do selct one of the plots.
    Good luck

  • Multi Plot

    Hi everyone,
    I am currently working with DIAdem and I would have some newbie questions.
    Call PicLoad("Template")
    Call GraphObjNew("2D-Axis","2DAxis1")
    Call GraphObjOpen("2DAxis1")
    Call GraphObjNew("2D-Curve","New_Curve") 'Creates a new curve
    Call GraphObjOpen("New_Curve") 'Opens the curve object
    D2CChnYName = "GroupName/ChannelName"
    Call GraphObjClose("New_Curve")
    D2AXISTOP = 9
    D2AXISBOTTOM = 40
    D2AXISLEFT = 15
    D2AXISRIGHT = 40
    Call GraphObjClose("2DAxis1")
    Call PicUpdate
     When I copy paste this twice and change the Channel Name, the previous plot is erased by the new plot. Would you know how to fix this?
    Also I was wondering how to change the marker. By mouse it is possible to select the cross marker but I do not know how to do it by script. The only thing I know is that I should put "cross" somewhere, but have no idea of the right command.
    Solved!
    Go to Solution.

    Actually, that's my mistake.
    I focused on the second post
    Here an adapted version:
    Call PicLoad("Template")
    Call GraphObjNew("2D-Axis","2DAxis1")
    Call GraphObjOpen("2DAxis1")
    Call GraphObjNew("2D-Curve","New_Curve") 'Creates a new curve
    Call GraphObjOpen("New_Curve") 'Opens the curve object
    D2CChnYName = "GroupName/ChannelName"
    Call GraphObjClose("New_Curve")
    D2AXISTOP = 9
    D2AXISBOTTOM = 40
    D2AXISLEFT = 15
    D2AXISRIGHT = 40
    Call GraphObjClose("2DAxis1")
    Dim o2DLineExtensions, o2DAdditionalMarker
    Set o2DLineExtensions = Report.ActiveSheet.Objects.Item("2DAxis1").Curves2​D.Item("New_Curve").Shape.Extensions
    Set o2DAdditionalMarker = o2DLineExtensions.Marker
    o2DAdditionalMarker.Type = eMarkerCross
    Call PicUpdate
    Are you familiar with script recording?
    If not, here's the information about it:
    http://digital.ni.com/public.nsf/allkb/B769AE10EDB​656D28625692D00583166?OpenDocument
    It can help alot when starting to write scripts.
    Kind Regards,
    Thierry C - Applications Engineering Specialist Northern European Region - National Instruments
    CLD, CTA
    If someone helped you, let them know. Mark as solved and/or give a kudo.

  • Charts: how do I determine when the mouse is in the plot area

    I'm trying to implement logic that will do the following:
    Panning plot within plot display area by clicking and dragging mouse
    If the user clicks and drags in the chart plot area (the region where the chart plot actually displays, not including the axes, legends, titles, etc.), I want to be able to provide the effect of panning the plot (e.g. similar to grabbing and dragging a map in Google maps) within the plot display. This makes the most sense, of course, if the user has zoomed in to some level and the entire plot is no longer fully visible within the display.
    Zooming on a plot
    If the user places the mouse somewhere in the chart plot area and uses their mouse wheel, I want to be able to provide the effect of zooming in and out of the plot. The plot area itself must remain at its original size, just the representation of the plot needs to simulate the effect of being zoomed in or out on.
    Thoughts, suggestions, ...
    To make the zoom and pan effect, my thought was to adjust the axes bounds as appropriate to simulate these effects. The trick for some of what I'm planning on doing is finding out where the mouse is in the plot area (not the whole chart) so that I can find the x,y offsets from the plot origin (which appears to be in the upper left - at the chart level anyway). For panning, I don't think I care what the offset is, just that it's within the plot. For zooming, I may need to know where the mouse is in the plot so that the zooming could be centered on that location in the plot. This makes me think that it would also be helpful to find out how to translate the mouse x,y pixel position to a corresponding x,y value in the plot data domain.
    I've been experimenting with attaching event handlers to detect various mouse actions and what information can be gleaned from these events. So far I have not found anything that allows me to determine the bounds of the plot region in the overall chart. I can get the mouse x,y position, but I don't know where it is in relation to the plot area bounds. I don't want to initiate a pan of a plot if the user happens to drag their mouse somewhere outside the plot area (i.e. over an axis, legend, etc.). Also, it would not make sense to start a zoom on the chart unless the mouse is over the plot.
    Please let me know if this seems to be a reasonable approach, and if not, please suggest any ideas for alternatives. Any help, ideas and suggestions regarding how to solve these issues and/or determine this information would be welcome.

    I experimented a bit and it seems the plot-content is the Group containing, well, the content of the plot. So in a line chart it's the smallest rectangle containing all the lines and the graphic at the data point (little circles, by default). What you probably need instead is the chart-plot-background.
    Here's a quick example of a panning chart. There are probably better ways to manage the mouse dragging (it behaves somewhat badly if you drag out of the plot area and then back in, for example) but it gives you the basic idea. My original idea of adding a mouse directly to the plot area failed as the event doesn't get propagated to the plot region if you click on part of the plot content (a line, for example).
    import java.util.Random;
    import javafx.application.Application;
    import javafx.beans.property.DoubleProperty;
    import javafx.beans.property.SimpleDoubleProperty;
    import javafx.collections.FXCollections;
    import javafx.collections.ObservableList;
    import javafx.event.EventHandler;
    import javafx.geometry.Point2D;
    import javafx.scene.Scene;
    import javafx.scene.chart.LineChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart.Data;
    import javafx.scene.chart.XYChart.Series;
    import javafx.scene.input.MouseEvent;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.Region;
    import javafx.stage.Stage;
    public class PanningChart extends Application {
      @Override
      public void start(Stage primaryStage) {
        final NumberAxis xaxis = new NumberAxis("x", 0, 10, 1);
        final NumberAxis yaxis = new NumberAxis("y", 0, 100, 10);
        final LineChart<Number, Number> chart = new LineChart<>(xaxis, yaxis);
        chart.setAnimated(false);
        chart.setData(createData());
        final Region plotArea = (Region) chart.lookup(".chart-plot-background");
        final DoubleProperty lastMouseX = new SimpleDoubleProperty();
        final DoubleProperty lastMouseY = new SimpleDoubleProperty();
        chart.setOnMousePressed(new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent event) {
            final double x = event.getX();
            final double y = event.getY();
            if (plotArea.getBoundsInParent().contains(new Point2D(x, y))) {
              lastMouseX.set(x);
              lastMouseY.set(y);
        chart.setOnMouseDragged(new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent event) {
            final double x = event.getX();
            final double y = event.getY();
            if (plotArea.getBoundsInParent().contains(new Point2D(x, y))) {
              moveAxis(xaxis, x, lastMouseX);
              moveAxis(yaxis, y, lastMouseY);
        final BorderPane root = new BorderPane();
        root.setCenter(chart);
        primaryStage.setScene(new Scene(root, 600, 400));
        primaryStage.show();
      private void moveAxis(NumberAxis axis, double mouseLocation,
          DoubleProperty lastMouseLocation) {
        double scale = axis.getScale();
        double delta = (mouseLocation - lastMouseLocation.get()) / scale;
        axis.setLowerBound(axis.getLowerBound() - delta);
        axis.setUpperBound(axis.getUpperBound() - delta);
        lastMouseLocation.set(mouseLocation);
      private ObservableList<Series<Number, Number>> createData() {
        final ObservableList<Data<Number, Number>> data = FXCollections
            .observableArrayList();
        final Random rng = new Random();
        for (int x = 0; x <= 10; x++) {
          data.add(new Data<Number, Number>(x, rng.nextDouble() * 100));
        return FXCollections.singletonObservableList(new Series<Number, Number>(data));
      public static void main(String[] args) {
        launch(args);
    998038 wrote:On a slightly different (but related) subject, where can I find an up-to-date source of information that describes the IDs and class names that JavaFX uses? I assume the ".plot-content" is pertaining to the ID of the chart plot area (or plot "child" of the chart?). Where can I find the names of the various objects that can be "looked up"?I generally try to avoid lookups as they feel a bit fragile. However occasionally there seems to be no other way, as in this case. The [url http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html]CSS reference guide documents the css class substructure of each Node type.

  • Multi plot graph - auxiliary curves

    I am in trouble with a multi plot graph. There is a wave chart that I have to plot an auxiliary line when the user clicks on the graphic. I know how to get the initial point and the final point of the auxiliar line. But I don´t know how can I plot this line in the same graph.
    Any ideas, sugestions or examples?
    Thank you in advance

    Speaking only for myself, I am not sure about the nature of your request.
    Could you please post some code showing an example of what you can do now and a jpg of what you desire.
    This may help us help you.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Mixed Signal Graph: Cursor Position Property for Multi-Plot Cursor

    I'm working 6 waveforms on 3 different plot areas in a mixed signal graph in LV2009.  When I try to pull the Cursor.PosY property from my cursor (in which Watch All Plots is True, and is set to Multi-Plot in the graph properties), it returns the value of only the first plot in the cluster of waveforms fed into the graph.  I've tried changing the active plot, active plot area, nothing changes.  I am able to retrieve each value via the cursor legend, but I cannot pull each of those values into another portion of my program.  Also, I noticed that when setting events in an event structure, any events relating to a cursor drag aren't present as they are in a waveform graph.  My workaround is to create an indicator for the Cursor.PosX property and monitor when that value changes, but I feel there should be an easier way.  Any help is appreciated.
    Thank you in advance!

    Jeanius,
       I am not quite sure why the cursor pos in the Wavegraph reference does not change when you change the active plot, but if you grab a reference to the specific cursor and then change the active plot things you receive the expected behavior.
    Ben J.
    National Instruments
    Applications Engineer
    Attachments:
    MODDEDmixed graph cursor ex.vi ‏41 KB

  • LabVIEW crashes when you run a VI that contains a mixed signal graph with a multi-plot cursor.

    Hello, LV 8.2.1 notes indicates the following bug fix:
    43SAIR2A  Fixed an issue where LabVIEW crashes when you run a VI that contains a mixed signal graph with a multi-plot cursor.
    I am running this version, and still have this behavior.  Is there anything I may be missing, and/or certain circumstances that may still be causing this?
    thanks in advance,
    Darren

    Darren:
    I looked at the CAR ID that you mentioned and the issue has been resolved in LabVIEW 8.2.1. To verify something similar, I ran the attached VI and things worked just fine. Please feel free to send me the steps to follow to reproduce the issue you are running into in 8.2.1.
    Regards,
    Rudi N.
    Attachments:
    MixedGraphs.vi ‏15 KB

  • Xy graph multi plots

    Hello,
    I have a need to plot a curve on an X-Y graph which is Voltage (Vsd) vs Current (Isd). After the first plot, I need to set another voltage (Vg) to a new level and repeat the plot. I would like to do this without erasing the original plot so I can generate a family of curves. Currently, I am using one trace on the graph which traces to zero at the beginning of the next plot. I need to create an entirely new plot on the graph instead of the original going to zero at the beginning of each plot. I cannot plot all curves at the same time because the voltage (Vg) level will change with each curve. Any suggestions will be appreciated.
    Thanks,
    Mark

    Maybe I misunderstand the question...
    Multiple plots on the XY-graph, means you need to put them in an array.  If you don't have all the graphs at once, then you could simply build the array dynamically.   I.e. you put the array in a shift register, and add elements (measurements) to it as you go.
    See the attached vi for an example.
    Attachments:
    multi-XYgraph.vi ‏11 KB

  • Multi plot cursor

    Dear All,
    I am working on Mixed Signal Graph with Multi plot cursor.
    My target is to move the cursor on X axis time scale and get the y axis values of all the plots.
    i got some ex. on forum but i am facing a typical problem explained as follows:
    By chaning the cursor plot i am getting the y axis values for each plot.
    The problem is that the values are continuously changing of the plot y axis value automatically, ans also the values of the respective plot does'nt match all the time, it changes.
    I have attached a example, in that the values of the respective plot changes every time.
    Am i missing anything, please guide.
    Regards,
    Shrek
    Attachments:
    Mixed Signal Cursor.vi ‏34 KB

    Here is a quick mod .. don't know if it solve your problem, but I get constant values
    Will work only if all plots have the same lenght ...
    Greetings from Germany
    Henrik
    LV since v3.1
    “ground” is a convenient fantasy
    '˙˙˙˙uıɐƃɐ lɐıp puɐ °06 ǝuoɥd ɹnoʎ uɹnʇ ǝsɐǝld 'ʎɹɐuıƃɐɯı sı pǝlɐıp ǝʌɐɥ noʎ ɹǝqɯnu ǝɥʇ'
    Attachments:
    Mixed Signal Cursor.vi ‏27 KB

  • Multi plot cursor in Mixed Graph

    If Digital waveform and normal waveform graph is plotted in a mixed graph, and if I choose watch all plots(multi plot) in cursor, LabVIEW closes immediately with an error popup dialog
    I have attached the print screen image of that error popup
    Attachments:
    error.JPG ‏188 KB

    Hi Stephen,
               I found a considerable solution to overcome that error.
               Build all the array data at first and then generate digtal
    waveform in single instance.
               ie., With number of numerical array data, build a 2D array of
    numerical data and make a transpose and then generate a waveform.
               It generates number of digital waveform equal to that of the
    column size of 2D Array.
               Do not build generated digital waveforms. This creates an error
    while using multi plot cursor--> watch--> All plots.
               I have attached the modified, bug removed Vi with this message for
    your reference.
    Regards,
    Raja
    Project Engineer
    Soliton Technologies
    www.solitontech.com
    Attachments:
    Mixed Graph Modified without Error.vi ‏25 KB

  • Multi-plot cursor in xy graph

    I am using an XY graph with 5 curves which belong to one of two y axes each. All curves share the same array of x values. I do not like the cursor legend so I want to read out the values of the one cursor programmatically. I can create a multi-plot cursor which watches all the 5 curves but I cannot find how I can read out the 5 corresponding y values of my cursor. Any help?
    Thanks,
       LX (using LV2014)

    Use the cursor index property value and wire that to an index array function for each y array.

  • Mixed Graph - Multi Plot Cursor Problem

    If I plot both Analog Waveform and Digital Waveform in a single Mixed Graph, and when I choose watch all plots in cursor legend, LabVIEW crashes with an error message.....
    I have also attached  the Print screen image of that Error
    Attachments:
    error.JPG ‏188 KB

    Jared Boothe,
               I found a solution to overcome that error.
               Build all the array data at first and then generate digtal waveform in single instance.
               ie., With number of numerical array data, build a 2D array of numerical data and make a transpose and then generate a waveform.
               It generates number of digital waveform equal to that of the column size of 2D Array.
               Do not build generated digital waveforms. This creates an error while using multi plot cursor--> watch--> All plots.
               I have attached the modified, error free Vi with this message for your reference.
    Regards,
    Raja
    Project Engineer
    Soliton Technologies
    www.solitontech.com 
    Attachments:
    Mixed Graph Modified without Error.vi ‏25 KB

  • Thermocouple Multi Plot Question

    I have a Keithley 2750 with a 7708 card in the first slot.
    I have no problem getting the readings, but when them come in, I want to index them based on their channel, which theoretically should happen by using 0 and 1 with the index command.
    If this isn't possible or there is an easier way to gather readings by channel, any help at all would be appreciated.
    Code is attached.
    Thanks in advance.
    Kat
    Solved!
    Go to Solution.
    Attachments:
    Keithley Thermocouple Multi Plot.vi ‏36 KB

    The problem is with the array that's produced.
    For this to work right, it should be a column with row 1=channel 1 and row 2=channel 2
    Because of the continuous read they switch sometimes, which makes plotting them near impossible.
    Simply put, I need to sort the data by channel so I can plot it properly, but neither I nor my mentor could figure out a way of doing that.

  • Double Scale in XY Multi Plot

    Hi,
    I really like the look of the graph used in XY Multi Plot.VI
    Does anyone know if you can have two scales on the y-axis for this type of plot? How to implement it?
    Thanks
    aleks.

    Yes, you can have two Y axes.  You right click on the one you have and choose "Duplicate Scale" to get the second scale.  You can then choose to "Swap Sides" if you want it on the other side of the graph.  From the Plot Legend, you can click on a plot to choose which Y scale will be used for that plot.  You might also want to play with grid colors or something like that to get some visual clue which plot goes with which scale.

Maybe you are looking for

  • Connecting external systems via JMS

    Hello there! I have this ATG MessageSink component connected on a sqldms queue named /integration/CustomerQueue, what is the best approach for connecting external system (like a standalone .jar) on ATG sqldms Messaging System, to post a message on th

  • Report to get the forward dated orders /standing orders

    Hi Expert, Is there any standard report to get forward dated orders /standing orders . Thanks in advance ..

  • Database refresh without using RMAN duplicate

    Hi All, I am planning to refresh my test instance to a PIT using RMAN backups from PROD. I would like to know the process without connecting to PROD database and without using RMAN duplicate command. Thanks.

  • Notes Button on Web Template & Authorisation

    The standard web template has a 'notes' button where the user can create note documents.  This looks very useful but these notes can also be deleted. Do you know if this functionality can be restricted in authorisation eg: prevent deletion of an exis

  • Next_record into tree

    I have a tree and i have an toolbox (next, previous, last etc). I want to implement next_record in tree so than the user can go to the next node using the toolbox. What can I do ? I'm a beginner with Forms :-) Thanks