Wolfram Natural Language Understanding System

Knowledge-based, broadly deployed natural language.

Wolfram Knowledgebase

Curated computable knowledge powering Wolfram|Alpha.

Manipulate [ expr , " c u " { u , } , " c v " { v , } , ]

links the controls to the specified controllers on an external device.

Details and Options

  • The expression expr can be any graphic or other expression. If it is None , only the controls are displayed.
  • The following forms by default yield particular forms of controls:
  • { u , u min , u max } manipulator ( slider , animator , etc. ) { u , u min , u max , du } discrete manipulator with step du { u , { x min , y min } , { x max , y max } } 2D slider { u , Locator } a locator in a graphic { u , { u 1 , u 2 , } } setter bar for few elements; popup menu for more { u , { u 1 -> lbl 1 , u 2 -> lbl 2 , } } setter bar or popup menu with labels for elements { u , { True , False } } checkbox { u , color } color slider { u } blank input field { u , FormObject [ ] } form with specified fields { u , func } create an arbitrary control from a function { { u , u init } , } control with initial value u init { { u , u init , u lbl } , } control with label u lbl { { u , } , , opts } control with particular options Control [ ] general control object Delimiter horizontal delimiter string , view , cell expression , etc. explicit text , view , cell , etc. annotations
  • Possible annotations given in place of controls include expressions with heads String , Style , Row , Item , Text , ExpressionCell , TextCell as well as views and layout constructs such as TabView , Grid , and Multicolumn .
  • Inside annotations, controls can be specified using Control .
  • The label u lbl for a control can be any expression.
  • The option setting ControlType -> type attempts to use controls of the specified type.
  • Possible control types include: Animator , Checkbox , CheckboxBar , ColorSetter , ColorSlider , FormControl , InputField , IntervalSlider , Manipulator , PopupMenu , RadioButton or RadioButtonBar , Setter or SetterBar , Slider , Slider2D , TogglerBar , Trigger , and VerticalSlider . None can also be used.
  • ControlType options can be given separately for each variable. Options for the controls can also be given within the specification for the variables.
  • ControlType ->Trigger specifies that a particular variable should be controlled by a trigger.
  • The control specification { u , u min , u max , , Appearance ->"Labeled" } yields a slider with the value displayed as a label.
  • In the form { u , func } , Dynamic [ u ] is given as the first argument to func .
  • The form { u , u min , u max , func } can also be used; what is evaluated is then func [ Dynamic [ u ] , { u min , u max } ] .
  • The form { u } is equivalent to { u , InputField } . { u , ColorSlider } gives a default color slider as a control.
  • In the form { u , Locator } , the value of u is a list giving x and y coordinates. The coordinates refer either to the first graphic in expr , or range from 0 to 1 in each direction across expr .
  • The form { { u , { { x 1 , y 1 } , { x 2 , y 2 } , } } , Locator } sets up a locator for each of the { x i , y i } , and makes the value of u be the list of all { x i , y i } .
  • The form { { u , u init } , { x min , y min } , { x max , y max } , Locator } specifies a range for the locators.
  • The option setting LocatorAutoCreate ->All specifies that new locators should be added for clicks that do not hit existing locators. Click deletes locators.
  • { { u , { } } , Locator , LocatorAutoCreate -> All } starts with no locators, but allows locators to be created.
  • If a variable u is used more than once, linked controls for it are given.
  • The option setting ControlPlacement -> pos specifies that controls should be placed at position pos relative to expr . Possible settings for pos are Bottom , Left , Right , and Top .
  • The placement of an annotation can be specified by enclosing it in an Item that has a ControlPlacement option.
  • The following overall options can be given:
  • Alignment Automatic how to align the output in the display area AppearanceElements Automatic overall control elements to include in the displayed output AutoAction False whether to change controls automatically when the mouse is over them AutorunSequencing Automatic how autorun should use the controls BaselinePosition Automatic alignment relative to surrounding text BaseStyle { } base style specifications for the Manipulate Bookmarks { } bookmark settings ContentSize Automatic the absolute size for the content area ContinuousAction Automatic whether to update continuously when controls are changed ControllerLinking Automatic when to activate links to external controllers ControllerMethod None how external controllers should operate ControllerPath Automatic what external controllers to try to use ControlPlacement Automatic placement of controls ControlType Automatic type of controls to use Deinitialization None an expression to be evaluated if the output from the Manipulate is deleted Deployed False whether to make the displayed output deployed Evaluator Automatic the kernel to use for evaluations ExcludedContexts Automatic contexts excluded from SaveDefinitions FrameLabel None labels for the outer frame FrameMargins Automatic margins inside the overall frame ImageMargins 0 margins around the whole Manipulate IncludedContexts All contexts considered for SaveDefinitions Initialization None an expression to be evaluated when output is first displayed InterpolationOrder Automatic interpolation order for animating transitions between bookmarks LabelStyle { } style specifications for the controls area LocalizeVariables True whether to localize the variables Paneled True whether to put the displayed output in a panel PreserveImageOptions True whether to preserve image size and other options when regenerating graphics RotateLabel False whether to rotate y labels on the frame SaveDefinitions False whether to save all definitions associated with expr ShrinkingDelay 0 how long to delay before shrinking if the displayed object gets smaller SynchronousInitialization True whether to perform initialization synchronously SynchronousUpdating Automatic whether to update synchronously TouchscreenAutoZoom False whether to zoom to fullscreen when activated on a touchscreen TouchscreenControlPlacement Automatic placement of controls on a touchscreen TrackedSymbols Full symbols whose changes trigger updates in the output UndoTrackedVariables None variables that , when changed , should be tracked by the front end's undo mechanism UnsavedVariables None variables whose values should not be saved
  • The options ControlPlacement and ControlType can be given separately for each variable, in the form { u , spec , opts } .
  • Manipulate is a scoping construct that implements lexical scoping.
  • Manipulate generates a DynamicModule object, with the variables u , v , etc. specified as local.
  • With the default setting UnsavedVariables -> { } , values of the variables u , v , etc. are automatically saved in notebooks, and restored when the notebooks are reopened.
  • With a setting Initialization :> expr , the expression expr is evaluated when Manipulate is executed, or when the result is first displayed in a particular session.
  • The setting for AppearanceElements can be a list in any order of the following: "ContentResizeArea" , "HideControlsButton" , "ManipulateMenu" , "SnapshotButton" . By default, only "ManipulateMenu" is included.
  • Clicking the snapshot button creates a cell directly below the Manipulate output, containing input of the form With [ { u = u val , } , expr ] specifying current values of all variables.
  • With the setting ContinuousAction -> None , an explicit Update button is displayed, and expr is not reevaluated until this is clicked.
  • With the default setting TrackedSymbols -> Automatic , only symbols that appear explicitly in expr are tracked.
  • TrackedSymbols -> True tracks symbols that appear in the controls of Manipulate .
  • With TrackedSymbols -> All , the output is updated whenever any symbol encountered in its evaluation is changed.
  • With the default setting ControllerLinking -> Automatic , controls in a Manipulate respond to specified controllers on an external device whenever the Manipulate is part of the current selection.
  • Controllers on an external device such as a gamepad can include joysticks, buttons, etc.
  • Typical external controller specifications include:
  • "Y" or "Y1" y primary y value "Z" or "Z1" z primary z value "XY" or "XY1" { x , y } primary 2-axis controller value "XYZ" or "XYZ1" { x , y , z } primary 3-axis controller value "X2" , "Y2" , "XY2" , etc. x , y , { x , y } , etc. values from a secondary controller "XCyclic" , etc. x , etc. values taken to be cyclic "XAbsolute" , etc. x , etc. values from absolute control positions "B1" , "B2" , etc. b 1 , b 2 , etc. toggling button states "B1Absolute" , "B2Absolute" , etc. b 1 , b 2 , etc. instantaneous button states
  • Raw external controller specification names for devices active in a particular Wolfram System session can typically be found using ControllerInformation .
  • With the default setting ControllerMethod -> Automatic , a controller specification such as "X" means that the displacement of a control such as a joystick by default determines the rate of change of the corresponding variable x . If an alternate state is selected, for example by depressing the joystick, then the absolute position of the control directly determines the value of x .
  • With a controller specification such as "XAbsolute" , the absolute position of a control such as a joystick determines the value of the corresponding variable x .
  • With a controller specification such as "XCyclic" , the value of the corresponding variable x is typically taken to wrap around cyclically when the control reaches the end of its range.
  • A controller specification such as "XYZ" may be associated with multiple controls on an external device, such as axes on two distinct joysticks on a single controller.
  • On a gamepad or other device with two joysticks, "XY1" typically refers to the left joystick, and "XY2" to the right one. If a gamepad has a "hat" control, this is typically referred to as "XY3" .
  • Button controller specifications such as "B1" toggle between True and False whenever the corresponding button is pressed.
  • Absolute specifications such as "B1Absolute" yield True while the button is being pressed, and False otherwise.
  • The settings for BaseStyle and LabelStyle are appended to the default styles typically given by the "Manipulate" and "ManipulateLabel" styles in the current stylesheet.
  • Examples

    open all close all

    Basic Examples (4)

    Manipulate a continuous parameter:

    Manipulate a parameter in discrete steps:

    Manipulate two parameters:

    Give defaults and names for parameters:

    ExcludedContexts (1)

    By default, certain system-internal contexts are not saved in the initialization option:

    Use ExcludedContexts { } to save definitions of all non-protected symbols:

    Possible Issues (6)

    When manipulating plots, the PlotRange may vary and cause resizing:

    Use a fixed PlotRange to prevent resizing:

    When manipulating plots, the tick sizes may vary and cause resizing:

    Use either a fixed PlotRange or ImagePadding to prevent resizing:

    Manipulate only "notices" explicit visible parameters:

    The parameter a is not explicitly visible in f :

    Redefine f to include the parameter a explicitly:

    Manipulate can support any number of Locator controls, as long as the initial value of each one is a single point:

    If a Manipulate contains a Locator control whose initial value is a list of points, then that Manipulate can contain no other Locator controls:

    Mixing single-point locators and multi-point locators in the same Manipulate will generate a warning:

    See Also

    ControllerManipulate Control Animate Table Manipulator Dynamic Deploy ControlActive ControlsRendering FormObject FormFunction FormControl

    Tech Notes

    Introduction to Manipulate Introduction to Dynamic Advanced Manipulate Functionality Advanced Dynamic Functionality Introduction to Control Objects

    Related Guides

    Interactive Manipulation Dynamic Visualization Custom Interface Construction Graphics Interactivity & Drawing Click-Interactive Panels Dynamic Graphics Elements Gamepad & Device Interface Control Objects Setting Up User Interactions Gauges Standalone Interfaces Creating Web Pages Generalized Input Options & Styling for Interactive Manipulation Creating & Importing Images Creating Form Interfaces & Apps Creating Instant APIs

    Related Workflows

    Related Workflows
    Build a Manipulate Use the Manipulate Interface Create Interactive Content for the Web Control Interactive Content with a Gamepad Avoid Dynamic Content Warnings

    Related Links

    Fast Introduction for Programmers: Interactive Interfaces An Elementary Introduction to the Wolfram Language : Interactive Manipulation An Elementary Introduction to the Wolfram Language : Creating Websites and Apps Wolfram Demonstrations Project

    History

    Introduced in 2007 (6.0) Updated in 2008 (7.0) 2012 (9.0) 2014 (10.0) 2019 (12.0) 2020 (12.1) 2021 (12.3) RelatedLinks-Demonstrations.png

    RelatedLinks-Demonstrations.png

    RelatedLinks-Demonstrations.png

    RelatedLinks-Demonstrations.png

    RelatedLinks-Demonstrations.png

    RelatedLinks-Demonstrations.png

    RelatedLinks-Demonstrations.png

    RelatedLinks-Demonstrations.png

    RelatedLinks-Demonstrations.png

    RelatedLinks-Demonstrations.png

    RelatedLinks-Demonstrations.png

  • Wolfram Language Introductory Book
  • Get Started with Wolfram
  • Fast Introduction for Programmers
  • Fast Introduction for Math Students
  • Webinars & Training
  • Wolfram U
  • Summer Programs
  • Videos
  • Books
  •