[{"data":1,"prerenderedAt":702},["ShallowReactive",2],{"docs-nav-docs_en":3,"docs-page-\u002Fen\u002Fvisualization\u002Fxy-graph-control":367,"docs-surround-\u002Fen\u002Fvisualization\u002Fxy-graph-control":699},[4],{"title":5,"path":6,"stem":7,"children":8},"En","\u002Fen","en",[9,13,41,58,76,103,157,171,190,211,238,283,303],{"title":10,"path":6,"stem":11,"navTitle":12},"QInsight Documentation","en\u002Findex","Overview",{"title":14,"navTitle":15,"path":16,"stem":17,"children":18,"page":40},"Getting Started",null,"\u002Fen\u002Fgetting-started","en\u002F01.getting-started",[19,23,27,31,36],{"title":20,"path":21,"stem":22,"navTitle":20},"What is QENEX Suite","\u002Fen\u002Fgetting-started\u002Fwhat-is-qenex-suite","en\u002F01.getting-started\u002F1.what-is-qenex-suite",{"title":24,"path":25,"stem":26,"navTitle":24},"What is QInsight","\u002Fen\u002Fgetting-started\u002Fwhat-is-qinsight","en\u002F01.getting-started\u002F2.what-is-qinsight",{"title":28,"path":29,"stem":30,"navTitle":28},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F01.getting-started\u002F3.installation",{"title":32,"path":33,"stem":34,"navTitle":35},"The QInsight user interface","\u002Fen\u002Fgetting-started\u002Fthe-qinsight-interface","en\u002F01.getting-started\u002F4.the-qinsight-interface","User interface",{"title":37,"path":38,"stem":39,"navTitle":37},"Licensing","\u002Fen\u002Fgetting-started\u002Flicensing","en\u002F01.getting-started\u002F5.licensing",false,{"title":42,"navTitle":15,"path":43,"stem":44,"children":45,"page":40},"First Project","\u002Fen\u002Ffirst-project","en\u002F02.first-project",[46,50,54],{"title":47,"path":48,"stem":49,"navTitle":47},"Create a project","\u002Fen\u002Ffirst-project\u002Fcreate-a-project","en\u002F02.first-project\u002F1.create-a-project",{"title":51,"path":52,"stem":53,"navTitle":51},"Project structure","\u002Fen\u002Ffirst-project\u002Fproject-structure","en\u002F02.first-project\u002F2.project-structure",{"title":55,"path":56,"stem":57,"navTitle":55},"Project password","\u002Fen\u002Ffirst-project\u002Fproject-password","en\u002F02.first-project\u002F3.project-password",{"title":59,"navTitle":15,"path":60,"stem":61,"children":62,"page":40},"Connecting a Device","\u002Fen\u002Fconnecting-a-device","en\u002F03.connecting-a-device",[63,67,71],{"title":64,"path":65,"stem":66,"navTitle":64},"Add a driver","\u002Fen\u002Fconnecting-a-device\u002Fadd-a-driver","en\u002F03.connecting-a-device\u002F1.add-a-driver",{"title":68,"path":69,"stem":70,"navTitle":68},"Add a protocol","\u002Fen\u002Fconnecting-a-device\u002Fadd-a-protocol","en\u002F03.connecting-a-device\u002F2.add-a-protocol",{"title":72,"path":73,"stem":74,"navTitle":75},"Link a driver and a protocol","\u002Fen\u002Fconnecting-a-device\u002Flink-driver-and-protocol","en\u002F03.connecting-a-device\u002F3.link-driver-and-protocol","Linking",{"title":77,"navTitle":15,"path":78,"stem":79,"children":80,"page":40},"Variables","\u002Fen\u002Fvariables","en\u002F04.variables",[81,85,90,94,99],{"title":82,"path":83,"stem":84,"navTitle":82},"What is a variable","\u002Fen\u002Fvariables\u002Fwhat-is-a-variable","en\u002F04.variables\u002F1.what-is-a-variable",{"title":86,"path":87,"stem":88,"navTitle":89},"Conversion and presentation","\u002Fen\u002Fvariables\u002Fconversion-and-presentation","en\u002F04.variables\u002F2.conversion-and-presentation","Conversion & presentation",{"title":91,"path":92,"stem":93,"navTitle":91},"Add a variable","\u002Fen\u002Fvariables\u002Fadd-a-variable","en\u002F04.variables\u002F3.add-a-variable",{"title":95,"path":96,"stem":97,"navTitle":98},"Matrix variable (array, curve, map)","\u002Fen\u002Fvariables\u002Fmatrix-variable","en\u002F04.variables\u002F4.matrix-variable","Matrix variable",{"title":100,"path":101,"stem":102,"navTitle":100},"Events","\u002Fen\u002Fvariables\u002Fevents","en\u002F04.variables\u002F5.events",{"title":104,"navTitle":15,"path":105,"stem":106,"children":107,"page":40},"Visualization","\u002Fen\u002Fvisualization","en\u002F05.visualization",[108,113,118,122,127,132,137,142,147,152],{"title":109,"path":110,"stem":111,"navTitle":112},"Create a workspace","\u002Fen\u002Fvisualization\u002Fcreate-a-workspace","en\u002F05.visualization\u002F1.create-a-workspace","Workspace",{"title":114,"path":115,"stem":116,"navTitle":117},"Writing values to the device","\u002Fen\u002Fvisualization\u002Fwrite-to-device","en\u002F05.visualization\u002F10.write-to-device","Writing to the device",{"title":119,"path":120,"stem":121,"navTitle":119},"Add a control","\u002Fen\u002Fvisualization\u002Fadd-a-control","en\u002F05.visualization\u002F2.add-a-control",{"title":123,"path":124,"stem":125,"navTitle":126},"Bind a control to a variable","\u002Fen\u002Fvisualization\u002Fbind-a-control","en\u002F05.visualization\u002F3.bind-a-control","Bind a control",{"title":128,"path":129,"stem":130,"navTitle":131},"Graph — signal time course","\u002Fen\u002Fvisualization\u002Fgraph-control","en\u002F05.visualization\u002F4.graph-control","Graph",{"title":133,"path":134,"stem":135,"navTitle":136},"XY Graph — signal versus signal","\u002Fen\u002Fvisualization\u002Fxy-graph-control","en\u002F05.visualization\u002F5.xy-graph-control","XY Graph",{"title":138,"path":139,"stem":140,"navTitle":141},"Gauge — instantaneous value indicator","\u002Fen\u002Fvisualization\u002Fgauge-control","en\u002F05.visualization\u002F6.gauge-control","Gauge",{"title":143,"path":144,"stem":145,"navTitle":146},"Single-Signal — a value with a caption","\u002Fen\u002Fvisualization\u002Fsignal-control","en\u002F05.visualization\u002F7.signal-control","Single-Signal",{"title":148,"path":149,"stem":150,"navTitle":151},"Watch Table — a table of variables","\u002Fen\u002Fvisualization\u002Fwatch-table-control","en\u002F05.visualization\u002F8.watch-table-control","Watch Table",{"title":153,"path":154,"stem":155,"navTitle":156},"Matrix control — maps and calibration","\u002Fen\u002Fvisualization\u002Fmatrix-control","en\u002F05.visualization\u002F9.matrix-control","Matrix control",{"title":158,"navTitle":15,"path":159,"stem":160,"children":161,"page":40},"Running and Monitoring","\u002Fen\u002Frunning","en\u002F06.running",[162,166],{"title":163,"path":164,"stem":165,"navTitle":163},"Start and stop","\u002Fen\u002Frunning\u002Fstart-and-stop","en\u002F06.running\u002F1.start-and-stop",{"title":167,"path":168,"stem":169,"navTitle":170},"Watching live data","\u002Fen\u002Frunning\u002Fwatching-live-data","en\u002F06.running\u002F2.watching-live-data","Live data",{"title":172,"navTitle":15,"path":173,"stem":174,"children":175,"page":40},"Logging and Replay","\u002Fen\u002Flogging-and-replay","en\u002F07.logging-and-replay",[176,180,185],{"title":177,"path":178,"stem":179,"navTitle":177},"Logging data","\u002Fen\u002Flogging-and-replay\u002Flogging-data","en\u002F07.logging-and-replay\u002F1.logging-data",{"title":181,"path":182,"stem":183,"navTitle":184},"Replaying a log","\u002Fen\u002Flogging-and-replay\u002Freplaying-a-log","en\u002F07.logging-and-replay\u002F2.replaying-a-log","Replay",{"title":186,"path":187,"stem":188,"navTitle":189},"Exporting data","\u002Fen\u002Flogging-and-replay\u002Fexporting-data","en\u002F07.logging-and-replay\u002F3.exporting-data","Export",{"title":191,"navTitle":15,"path":192,"stem":193,"children":194,"page":40},"Python Scripts","\u002Fen\u002Fpython-scripts","en\u002F08.python-scripts",[195,199,203,207],{"title":196,"path":197,"stem":198,"navTitle":12},"Scripts overview","\u002Fen\u002Fpython-scripts\u002Fscripts-overview","en\u002F08.python-scripts\u002F1.scripts-overview",{"title":200,"path":201,"stem":202,"navTitle":200},"Accessing variables","\u002Fen\u002Fpython-scripts\u002Faccessing-variables","en\u002F08.python-scripts\u002F2.accessing-variables",{"title":204,"path":205,"stem":206,"navTitle":204},"Example script","\u002Fen\u002Fpython-scripts\u002Fexample-script","en\u002F08.python-scripts\u002F3.example-script",{"title":208,"path":209,"stem":210,"navTitle":208},"CSV post-processing","\u002Fen\u002Fpython-scripts\u002Fcsv-post-processing","en\u002F08.python-scripts\u002F4.csv-post-processing",{"title":212,"navTitle":15,"path":213,"stem":214,"children":215,"page":40},"Custom extensions","\u002Fen\u002Fcustom-extensions","en\u002F09.custom-extensions",[216,220,224,228,233],{"title":217,"path":218,"stem":219,"navTitle":217},"Custom driver","\u002Fen\u002Fcustom-extensions\u002Fcustom-driver","en\u002F09.custom-extensions\u002F1.custom-driver",{"title":221,"path":222,"stem":223,"navTitle":221},"Custom protocol","\u002Fen\u002Fcustom-extensions\u002Fcustom-protocol","en\u002F09.custom-extensions\u002F2.custom-protocol",{"title":225,"path":226,"stem":227,"navTitle":225},"Custom Control","\u002Fen\u002Fcustom-extensions\u002Fcustom-control","en\u002F09.custom-extensions\u002F3.custom-control",{"title":229,"path":230,"stem":231,"navTitle":232},"Complete example — ISS position","\u002Fen\u002Fcustom-extensions\u002Fiss-example","en\u002F09.custom-extensions\u002F4.iss-example","Example ISS",{"title":234,"path":235,"stem":236,"navTitle":237},"Complete example — temperature sensor","\u002Fen\u002Fcustom-extensions\u002Ftemp-sensor-example","en\u002F09.custom-extensions\u002F5.temp-sensor-example","Example temp sensor",{"title":239,"navTitle":15,"path":240,"stem":241,"children":242,"page":40},"QFW SDK","\u002Fen\u002Fdevice-sdk","en\u002F10.device-sdk",[243,248,253,258,263,268,273,278],{"title":244,"path":245,"stem":246,"navTitle":247},"QFW SDK — introduction","\u002Fen\u002Fdevice-sdk\u002Fintroduction","en\u002F10.device-sdk\u002F1.introduction","Introduction",{"title":249,"path":250,"stem":251,"navTitle":252},"XCP in the QFW SDK","\u002Fen\u002Fdevice-sdk\u002Fxcp","en\u002F10.device-sdk\u002F2.xcp","XCP",{"title":254,"path":255,"stem":256,"navTitle":257},"Integration step by step: XCP on TCP with FreeRTOS + lwIP","\u002Fen\u002Fdevice-sdk\u002Fintegration-tcp","en\u002F10.device-sdk\u002F3.integration-tcp","Integration: XCP on TCP",{"title":259,"path":260,"stem":261,"navTitle":262},"XCP on classic CAN — what changes","\u002Fen\u002Fdevice-sdk\u002Fcan","en\u002F10.device-sdk\u002F4.can","XCP on classic CAN",{"title":264,"path":265,"stem":266,"navTitle":267},"Integration without an RTOS: XCP on TCP from the main loop","\u002Fen\u002Fdevice-sdk\u002Fbaremetal","en\u002F10.device-sdk\u002F5.baremetal","Integration without an RTOS",{"title":269,"path":270,"stem":271,"navTitle":272},"The engine contract","\u002Fen\u002Fdevice-sdk\u002Fengine-contract","en\u002F10.device-sdk\u002F6.engine-contract","Engine contract",{"title":274,"path":275,"stem":276,"navTitle":277},"Variable addresses for QInsight","\u002Fen\u002Fdevice-sdk\u002Fvariable-addresses","en\u002F10.device-sdk\u002F7.variable-addresses","Variable addresses",{"title":279,"path":280,"stem":281,"navTitle":282},"Troubleshooting the SDK integration","\u002Fen\u002Fdevice-sdk\u002Ftroubleshooting","en\u002F10.device-sdk\u002F8.troubleshooting","Troubleshooting",{"title":284,"navTitle":15,"path":285,"stem":286,"children":287,"page":40},"Reference","\u002Fen\u002Freference","en\u002F11.reference",[288,292,296,300],{"title":289,"path":290,"stem":291,"navTitle":289},"Drivers","\u002Fen\u002Freference\u002Fdrivers","en\u002F11.reference\u002F1.drivers",{"title":293,"path":294,"stem":295,"navTitle":293},"Protocols","\u002Fen\u002Freference\u002Fprotocols","en\u002F11.reference\u002F2.protocols",{"title":297,"path":298,"stem":299,"navTitle":297},"Controls","\u002Fen\u002Freference\u002Fcontrols","en\u002F11.reference\u002F3.controls",{"title":282,"path":301,"stem":302,"navTitle":282},"\u002Fen\u002Freference\u002Ftroubleshooting","en\u002F11.reference\u002F4.troubleshooting",{"title":304,"navTitle":15,"path":305,"stem":306,"children":307,"page":40},"Examples","\u002Fen\u002Fexamples","en\u002F12.examples",[308,312,317,322,327,331,335,339,343,347,352,357,362],{"title":309,"path":310,"stem":311,"navTitle":309},"Simulation: all signals","\u002Fen\u002Fexamples\u002Fsimulation-all-signals","en\u002F12.examples\u002F01.simulation-all-signals",{"title":313,"path":314,"stem":315,"navTitle":316},"Modbus RTU master over a serial line","\u002Fen\u002Fexamples\u002Fserial-modbus-master","en\u002F12.examples\u002F02.serial-modbus-master","Modbus RTU master",{"title":318,"path":319,"stem":320,"navTitle":321},"Modbus RTU slave with simulated sensors","\u002Fen\u002Fexamples\u002Fserial-modbus-slave","en\u002F12.examples\u002F03.serial-modbus-slave","Modbus RTU slave",{"title":323,"path":324,"stem":325,"navTitle":326},"Modbus TCP master over a TCP client","\u002Fen\u002Fexamples\u002Ftcp-client-modbus-master","en\u002F12.examples\u002F04.tcp-client-modbus-master","Modbus TCP master",{"title":328,"path":329,"stem":330,"navTitle":328},"Modbus TCP slave on the TCP Server","\u002Fen\u002Fexamples\u002Ftcp-server-modbus-slave","en\u002F12.examples\u002F05.tcp-server-modbus-slave",{"title":332,"path":333,"stem":334,"navTitle":332},"Bit field and a script","\u002Fen\u002Fexamples\u002Fbit-field-script","en\u002F12.examples\u002F08.bit-field-script",{"title":336,"path":337,"stem":338,"navTitle":336},"Two ECUs at once","\u002Fen\u002Fexamples\u002Ftwo-ecus","en\u002F12.examples\u002F09.two-ecus",{"title":340,"path":341,"stem":342,"navTitle":340},"ISS position live","\u002Fen\u002Fexamples\u002Fiss-live-tracking","en\u002F12.examples\u002F10.iss-live-tracking",{"title":344,"path":345,"stem":346,"navTitle":344},"Simulated thermometer","\u002Fen\u002Fexamples\u002Fsimul-temp-measure","en\u002F12.examples\u002F11.simul-temp-measure",{"title":348,"path":349,"stem":350,"navTitle":351},"JSON signals from a Python generator","\u002Fen\u002Fexamples\u002Fjson-signal-python","en\u002F12.examples\u002F12.json-signal-python","JSON signals from Python",{"title":353,"path":354,"stem":355,"navTitle":356},"Raw CAN frames from a Raspberry Pi","\u002Fen\u002Fexamples\u002Fraw-can-python","en\u002F12.examples\u002F13.raw-can-python","Raw CAN from a Raspberry Pi",{"title":358,"path":359,"stem":360,"navTitle":361},"XCP on TCP on a NUCLEO-H723ZG: measurement, stimulation and calibration maps","\u002Fen\u002Fexamples\u002Ftcp-client-xcp-nucleo-maps","en\u002F12.examples\u002F14.tcp-client-xcp-nucleo-maps","XCP on TCP on NUCLEO-H723ZG",{"title":363,"path":364,"stem":365,"navTitle":366},"XCP on CAN on a NUCLEO-H723ZG: measurement, stimulation and calibration maps","\u002Fen\u002Fexamples\u002Fcan-xcp-nucleo-maps","en\u002F12.examples\u002F15.can-xcp-nucleo-maps","XCP on CAN on NUCLEO-H723ZG",{"id":368,"title":133,"body":369,"description":693,"extension":694,"meta":695,"navTitle":136,"navigation":696,"path":134,"seo":697,"stem":135,"__hash__":698},"docs_en\u002Fen\u002F05.visualization\u002F5.xy-graph-control.md",{"type":370,"value":371,"toc":682},"minimark",[372,376,388,403,414,419,441,451,463,467,470,591,595,605,609,641,645,672,676],[373,374,133],"h1",{"id":375},"xy-graph-signal-versus-signal",[377,378,379,380,383,384,387],"p",{},"The ",[381,382,136],"strong",{}," plots one signal against another — the horizontal axis\nis not time but the value of a chosen ",[381,385,386],{},"X signal",". It shines wherever\nthe relationship between two quantities says more than their time\ncourses: Lissajous figures, hysteresis loops (B–H, voltage–current,\nstress–strain), characteristic curves, or phase portraits.",[377,389,390,398],{},[391,392],"img",{"alt":393,"className":394,"src":396,"style":397},"Stress–strain hysteresis loop in the XY Graph",[395],"img-light","\u002Fimg\u002FQInsight_tut_5_5_xygraph_light.png","width:70%",[391,399],{"alt":393,"className":400,"src":402,"style":397},[401],"img-dark","\u002Fimg\u002FQInsight_tut_5_5_xygraph_dark.png",[377,404,405,406,409,410,413],{},"The control accepts numeric scalar variables. Each curve point is formed\nfrom a ",[381,407,408],{},"pair of samples",": a new sample of a Y signal is paired with the\nvalue of the X signal ",[381,411,412],{},"at the same instant"," — by the samples' timestamps\n(X is interpolated linearly between two samples), not by the order in\nwhich the data arrived — and the point (X, Y) is drawn. The curve is free\nto double back on itself — with a hysteresis loop, that is exactly the\npoint.",[415,416,418],"h2",{"id":417},"choosing-the-x-signal","Choosing the X signal",[377,420,421,422,425,426,429,430,433,434,437,438,440],{},"Drag the ",[381,423,424],{},"X signal and all Y signals"," onto the control just like on a\nregular graph. ",[381,427,428],{},"The first signal you drop becomes the X signal\nautomatically"," (the ",[381,431,432],{},"X"," checkbox in the ",[381,435,436],{},"Signals"," tab ticks itself);\nevery further signal is a Y signal on the first vertical axis. You can\nchange the choice at any time by ticking the ",[381,439,432],{}," column on another\nseries — there is always exactly one X signal; its caption appears on the\nhorizontal axis and it is not drawn as a curve. The remaining series are\nY signals — several can be shown at once.",[377,442,443,444,446,447,450],{},"When you untick the ",[381,445,432],{}," checkbox or remove the X signal, the chart\nclears and ",[381,448,449],{},"waits for you to choose a new X"," — no other signal is\npromoted to X on its own (that would silently change the meaning of the\nfigure).",[377,452,453,459],{},[391,454],{"alt":455,"className":456,"src":457,"style":458},"XY Graph settings — the X checkbox on the source series",[395],"\u002Fimg\u002FQInsight_tut_5_5_xygraph_settings_light.png","width:60%",[391,460],{"alt":455,"className":461,"src":462,"style":458},[401],"\u002Fimg\u002FQInsight_tut_5_5_xygraph_settings_dark.png",[415,464,466],{"id":465},"settings","Settings",[377,468,469],{},"The control's expandable section has three tabs:",[471,472,473,500,544],"ul",{},[474,475,476,479,480,483,484,487,488,495,496,499],"li",{},[381,477,478],{},"General"," — ",[381,481,482],{},"Hor. legend"," (a horizontal legend), ",[381,485,486],{},"Title"," (the\nchart title), and ",[381,489,490,491],{},"Persistence ",[492,493,494],"span",{},"ms"," (the age of points): the XY\nGraph has no time window; instead it keeps a ",[381,497,498],{},"rolling window of the\nlast N milliseconds"," — older points disappear from the curve. A short\npersistence shows only the current loop, a long one lets the figure\n\"settle\" over several periods.",[474,501,502,504,505,507,508,511,512,511,515,511,518,521,522,525,526,529,530,511,532,511,534,536,537,539,540,543],{},[381,503,436],{}," — a table of series: ",[381,506,432],{}," (the X-signal choice),\n",[381,509,510],{},"Label",", ",[381,513,514],{},"Visibility",[381,516,517],{},"Color",[381,519,520],{},"Width"," (line width 1–20),\n",[381,523,524],{},"Style"," (line style — Solid, Dashed, DenselyDashed, Dotted), and\n",[381,527,528],{},"Axis Id"," (assigning a Y series to a vertical axis — axes from\nnumber 2 are offered, the X signal is fixed to axis 1). On the\nX-signal row ",[381,531,514],{},[381,533,517],{},[381,535,520],{}," and ",[381,538,524],{}," are\ninactive — the X signal is not drawn. Remove a series with right\nclick → ",[381,541,542],{},"Remove",".",[474,545,546,549,550,511,553,511,556,558,559,511,561,563,564,567,568,571,572,575,576,579,580,583,584,587,588,590],{},[381,547,548],{},"Axes"," — a table of axes: ",[381,551,552],{},"Id",[381,554,555],{},"Side",[381,557,510],{},",\n",[381,560,514],{},[381,562,517],{},", and a range — ",[381,565,566],{},"AutoScale"," or a fixed\n",[381,569,570],{},"Min","\u002F",[381,573,574],{},"Max",". ",[381,577,578],{},"Row 1 is always the horizontal X axis"," (it drives\nthe caption, colour and range of the bottom axis; without a caption of\nits own the X signal's name is used), ",[381,581,582],{},"row 2 the first vertical Y\naxis"," — both exist from the start and cannot be removed. Add further\nvertical axes with right click → ",[381,585,586],{},"Add"," and remove them with\n→ ",[381,589,542],{},"; an axis used by a signal cannot be removed — the disabled\nitem explains why in its tooltip (e.g. \"The axis is used by: …\").",[415,592,594],{"id":593},"axis-scaling","Axis scaling",[377,596,597,599,600,571,602,604],{},[381,598,566],{}," (the default on all axes) works like an oscilloscope: the\nX and Y axes follow the minimum and maximum of the points currently in\nthe persistence window — the range grows and shrinks with the data, with\na small margin and rounded values. Switching AutoScale off freezes the\nlast range and lets you enter a fixed ",[381,601,570],{},[381,603,574],{}," — also at runtime.\nMouse zoom and pan in the chart are kept until you change the axis\nsettings or the automatic scale is recomputed.",[415,606,608],{"id":607},"context-menu","Context menu",[471,610,611,617,623,629,635],{},[474,612,613,616],{},[381,614,615],{},"Clear Graph"," — clears the drawn data,",[474,618,619,622],{},[381,620,621],{},"Zoom to Fit"," — fits the axes to the current data,",[474,624,625,628],{},[381,626,627],{},"Export Image"," — saves a snapshot of the chart (PNG, SVG…),",[474,630,631,634],{},[381,632,633],{},"Export CSV"," — saves the series data to CSV,",[474,636,637,640],{},[381,638,639],{},"Lock"," — locks the control on the workspace.",[415,642,644],{"id":643},"tips","Tips",[471,646,647,654,661,664],{},[474,648,649,650,653],{},"For the figure to make sense, the X and Y signals should be sampled\n",[381,651,652],{},"in the same beat"," — e.g. a pair of values from one ECU DAQ event\nchannel or from the same periodic event. Samples of one event share\ntheir timestamps, so they pair exactly.",[474,655,656,657,660],{},"The XY Graph ",[381,658,659],{},"reveals staircase shapes"," that a time course hides\noptically: if the X or Y signal is stimulated (bypassed from QInsight,\nchanging only on each write), steps appear in the figure — not a chart\nerror but a faithful picture of the signal. With bypass off the curve\nis smooth.",[474,662,663],{},"The control's settings (axes, signal assignment, which signal is X)\nare saved with the workspace.",[474,665,666,667,671],{},"It helps to keep the time course of the same signals next door in a\nregular ",[668,669,131],"a",{"href":670},"\u002Fvisualization\u002Fgraph-control"," — the XY Graph does not\nshow time.",[415,673,675],{"id":674},"next","Next",[377,677,678,679,543],{},"The instantaneous value in zones is shown by the\n",[668,680,141],{"href":681},"\u002Fvisualization\u002Fgauge-control",{"title":683,"searchDepth":684,"depth":684,"links":685},"",3,[686,688,689,690,691,692],{"id":417,"depth":687,"text":418},2,{"id":465,"depth":687,"text":466},{"id":593,"depth":687,"text":594},{"id":607,"depth":687,"text":608},{"id":643,"depth":687,"text":644},{"id":674,"depth":687,"text":675},"Plotting one signal against another — Lissajous figures, hysteresis loops, and characteristic curves.","md",{},true,{"title":133,"description":693},"LY18d1LbFD9dwaT7frqXk-3WXqWW038sXabNvn8aJoY",[700,701],{"title":128,"path":129,"stem":130,"navTitle":131,"children":-1},{"title":138,"path":139,"stem":140,"navTitle":141,"children":-1},1791554568268]