1title:: plot 2summary:: Plot data in a graph 3categories:: Common methods, GUI 4 5 6section:: Description 7The link::Overviews/Methods#plot#plot method:: provides the ability to plot data in a GUI window. The method is implemented in the link::Classes/ArrayedCollection:: class but is also available for other classes for convenience, including link::Classes/Function::, link::Classes/Bus::, link::Classes/Env::, link::Classes/Buffer::, link::Classes/SoundFile::, link::Classes/Wavetable::. 8 9method:: plot 10All arguments are optional. 11note::The arguments available vary from object to object. The below list is only for explanation of possible arguments.:: 12 13 14argument:: name 15The name to be used as the GUI window title. 16 17argument:: bounds 18A link::Classes/Rect:: providing coordinates for the GUI location. 19 20argument:: discrete 21Plots are line-plots by default. Set this to code::true:: for bar charts. 22 23argument:: numChannels 24The number of interleaved channels that an array represents. For Buffers this argument is not available, since it's filled in automatically. 25 26argument:: minval 27Minimum value(s) for the display range. For a Buffer this defaults to code::-1:: but can be changed. 28 29argument:: maxval 30Maximum value(s) for the display range. For a Buffer this defaults to code::+1:: but can be changed. 31 32argument:: separately 33When finding the right display range in multi channel plots, do this together for all or keep them separate. 34 35argument:: parent 36By default the plot is placed in a new GUI window. This argument can be used to specify an existing GUI container to send the plot to. 37 38argument:: labels 39By default labels appear at the top left of the plot giving a data readout based on mouse position. Set this argument to code::false:: to prevent them appearing. 40 41 42discussion:: 43If code::minval:: and/or code::maxval:: are set to code::nil:: (this is default, except for link::Classes/Buffer::s), they will be automatically calculated from the dataset minimum and/or maximum. For multi-channel data, code::minval:: and code::maxval:: may be arrays, specifying the range independently for each channel (including use of code::nil::, in which case the min/max will be calculated for the specific channel rather than for the overall dataset). When the receiver contains code::nil:: items, the plot fails with an error. 44 45Hitting the strong::E-key:: on the keyboard when the window is focussed toggles the lock, and the window can be used to edit the data. 46 47section:: Examples 48 49note:: See some of the classes linked above for more examples :: 50 51code:: 52// Arrays 53[5, 6, 7, 6.5, 4.5, 3.5].plot("Some data") 54[5, 6, 7, 6.5, 4.5, 3.5].plot("Some data, in stereo", numChannels:2) 55[5, 6, 7, 6.5, 4.5, 3.5].plot("Some data, in stereo", numChannels:2, discrete: true) 56 57{ |i| { |j| j + 1 * (i + 1) % 6 }.dup(100) }.dup(5).plot("Some 2-d data"); 58 59// 3-channel interlaced data 60b = [{1.0.rand}.dup(50), { 20.0.rand - 30 }.dup(50),{ 10.0.rand }.dup(50)].lace(150); 61b.plot(numChannels:3); // Common rescaling 62b.plot(numChannels:3, separately: false); 63b.plot(numChannels:3, minval: [nil, -100, nil], maxval: [nil, nil, 10]); // multichannel range parameters 64 65// Envelopes 66Env.adsr(0.4, 0.4, 0.8, 0.9).plot 67 68// Buffers 69s.boot; 70b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav"); 71b.plot; // +-1 range 72b.plot(minval: nil, maxval: nil); // auto range 73b.plot(minval: 0, maxval: nil); // semi-auto range 74 75// UGen functions 76{ LFDNoise3.ar(XLine.ar(1000, 100, 0.1) ! 3) }.plot(0.1); 77:: 78