Manipulate

Manipulate[expr,{u,umin,umax}]

u の値をインタラクティブに操作するためのコントロールを追加した expr を生成する.

Manipulate[expr,{u,umin,umax,du}]

u の値は範囲 uminから umax,刻み幅 du で変化する.

Manipulate[expr,{{u,uinit},umin,umax,}]

u の初期値が uinitであると解釈する.

Manipulate[expr,{{u,uinit,ulbl},}]

u のコントロールに ulbl のラベルを付ける.

Manipulate[expr,{u,{u1,u2,}}]

u は離散的な値 u1,u2, を取ることができる.

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

u,v, を操作するコントロールを追加する.

Manipulate[expr,"cu"{u,},"cv"{v,},]

外部デバイス上の指定されたコントローラとコントロールを繋ぐ.

詳細とオプション

  • expr はグラフィックスやその他の式でもよい.Noneの場合はコントロールのみが表示される.
  • デフォルトで,次の形式はコントロールの特別な形を与える.
  • {u,umin,umax}マニピュレータ(スライダー,アニメータ等)
    {u,umin,umax,du}刻み幅 du の離散的マニピュレータ
    {u,{xmin,ymin},{xmax,ymax}}2Dスライダー
    {u,Locator}グラフィックス内のロケータ
    {u,{u1,u2,}}2,3個の要素のためのセッターバー,それ以上の要素にはポップアップメニュー
    {u,{u1->lbl1,u2->lbl2,}}要素にラベルが付いた設定バーあるいはポップアップメニュー
    {u,{True, False}}チェックボックス
    {u,color}色スライダー
    {u}空白の入力フィールド
    {u,FormObject[]}指定されたフィールドのあるフォーム
    {u,func}関数から任意のコントロールを作成する
    {{u,uinit},}初期値 uinitのコントロール
    {{u,uinit,ulbl},}ラベル ulblの付いたコントロール
    {{u,},,opts}特定のオプション付きのコントロール
    Control[]コントロールオブジェクトを生成する
    Delimiter水平デリミタ
    文字列,セル,式等明示的なテキスト,セル等の注釈
  • コントロールの代りに与えることのできる注釈には,TabViewGridMulticolumnのようなビューおよびレイアウト構造に加え,StringStyleRowItemTextExpressionCellTextCellを頭部に持つ式等がある.
  • コントロールのラベル ulblはどのような式でもよい.
  • 注釈内部では,コントロールはControlを使って指定することができる.
  • オプション設定のControlType->type は,指定されたタイプのコントロールを行おうとする.
  • 使用可能なコントロールタイプには,AnimatorCheckboxCheckboxBarColorSetterColorSliderFormControlInputFieldIntervalSliderManipulatorPopupMenuRadioButtonRadioButtonBar,かSetterSetterBar,あるいはSliderSlider2DTogglerBarTriggerVerticalSlider等がある.Noneを使うこともできる.
  • 各変数に対して別々にControlTypeオプションを与えることができる.コントロール用のオプションも,変数の指定内で与えることができる.
  • ControlType->Triggerは,特定の変数をトリガで制御するように指定する.
  • コントロール指定{u,umin,umax,,Appearance->"Labeled"}は値がラベルとして表示されるスライダーを返す.
  • {u,func}の形のときは,Dynamic[u]func の第1引数として与えられる.
  • {u,umin,umax,func}という形もまた使うことができる.この場合,評価されるのはfunc[Dynamic[u],{umin,umax}]である.
  • {u}{u, InputField}と等価である.{u, ColorSlider}はデフォルトの色スライダーをコントロールとして与える.
  • {u,Locator}の形式のとき,u の値は xy の座標を与えるリストである.この座標は expr 中の最初のグラフィックスか,expr の各方向について0から1の範囲のどちらかに属する.
  • {{u,{{x1,y1},{x2,y2},}},Locator}の形式で{xi,yi}のそれぞれのロケータを設定し,u の値がすべての{xi,yi}のリストになるようにする.
  • {{u,uinit},{xmin,ymin},{xmax,ymax},Locator}の形式でロケータの範囲を指定する.
  • オプション設定のLocatorAutoCreate->Allは,既存のロケータに当たらなかったクリックについて新たなロケータを追加するように指定する.Clickでロケータを削除する.
  • {{u,{}},Locator,LocatorAutoCreate->All}は,ロケータがない状態から始めるが,新たなロケータが作られることを許容する.
  • 変数 u が複数回用いられている場合は,このためのリンクされたコントロールが与えられている.
  • オプション設定のControlPlacement->pos で,expr と相対的な位置 pos にコントロールを置くように指定する.pos の可能な設定値はBottomLeftRightTopである.
  • 注釈の置き方は,注釈をControlPlacementオプションを持つItemで囲むことで指定することができる.
  • 次のオプションが使用できる.
  • Alignment Automatic表示エリアの出力をどのように整列させるか
    AppearanceElements Automatic表示された出力が含む全体的な制御要素
    AutoAction Falseマウスがその上に置かれたときにコントロールを自動的に変えるかどうか
    AutorunSequencing Automaticオートランがどのようにコントロールを使うべきか
    BaselinePosition Automatic周囲のテキストとの相対的な位置付け
    BaseStyle{}Manipulateのベーススタイル指定
    Bookmarks{}ブックマークの設定
    ContentSize Automaticコンテンツエリアの絶対サイズ
    ContinuousAction Automaticコントロールが変更されたときに継続的に自動更新を行うかどうか
    ControllerLinking Automatic外部コントローラへのリンクをいつアクティブにするか
    ControllerMethod None外部コントローラがどのように動作するか
    ControllerPath Automaticどのような外部コントローラを使ってみるか
    ControlPlacement Automaticコントロールの配置
    ControlType Automatic使用するコントロールタイプ
    Deinitialization NoneManipulateからの出力が削除されたときに評価される式
    Deployed False表示された出力を配備するかどうか
    EvaluatorAutomatic評価に使用するカーネル
    ExcludedContexts AutomaticSaveDefinitionsから除外されるコンテキスト
    FrameLabel None外側の枠のラベル
    FrameMargins Automatic全体的な枠の内側の余白
    ImageMargins 0Manipulate全体の周囲の余白
    IncludedContexts AllSaveDefinitionsで考慮されるコンテキスト
    Initialization None出力が最初に表示されたときに評価する式
    InterpolationOrderAutomaticブックマーク間の変化をアニメーションにする際の補間次数
    LabelStyle {}コントロールエリアのスタイル指定
    LocalizeVariables True変数を局所化するかどうか
    Paneled True表示された出力をパネルに入れるかどうか
    PreserveImageOptionsTrueグラフィックスを再生成する際に画像サイズと他のオプションを保存するかどうか
    RotateLabel False枠の上の y ラベルを回転させるかどうか
    SaveDefinitions Falseexpr と関連するすべての定義を保存するかどうか
    ShrinkingDelay0表示されたオブジェクトが小さくなる場合の縮めるまでの遅延時間
    SynchronousInitialization True初期化を同期して行うかどうか
    SynchronousUpdating Automatic更新を同期して行うかどうか
    TouchscreenAutoZoomFalseタッチスクリーン上でアクティベートされたときに自動でフルスクリーンにズームするかどうか
    TouchscreenControlPlacementAutomaticタッチスクリーン上でのコントロールの置き方
    TrackedSymbols Fullその変更が出力の更新を引き起す記号
    UndoTrackedVariables None変更された場合に,フロントエンドの取消し機能によって追跡されるべき変数
    UnsavedVariablesNone値を保存すべきではない変数
  • オプションControlPlacementおよびControlTypeは,{u,spec,opts}の形式で,それぞれの変数に別々に与えることができる.
  • Manipulateはレキシカルスコープを実装するスコープ構文である.
  • Manipulateは,変数 uv 等を局所的に指定してDynamicModuleオブジェクトを生成する.
  • デフォルト設定のUnsavedVariables->{}では,変数 uv 等の値は自動的にノートブックに保存され,ノートブックが再度開かれたときに復元される.
  • Initialization:>expr の設定では,Manipulateが実行されたとき,あるいは特定のセッションで結果が最初に表示されたときに式 expr が評価される.
  • AppearanceElementsの設定として,リスト中に"ContentResizeArea""HideControlsButton""ManipulateMenu""SnapshotButton"を任意の順序で指定することができる.デフォルトでは"ManipulateMenu"のみが含まれる.
  • スナップショットボタンをクリックするとManipulate出力の真下に全変数の現行値を指定するWith[{u=uval,},expr]形式の入力を含むセルが作られる.
  • ContinuousAction->Noneという設定のときは明示的な「更新」ボタンが表示され,これが押されるまで expr は再評価されない.
  • デフォルト設定のTrackedSymbols->Automaticでは,expr に明示的に現れる記号だけが追跡記録される.
  • TrackedSymbols->TrueManipulateのコントロールに現れたシンボルを追跡する.
  • TrackedSymbols->Allとすると,評価中に遭遇した記号が変化するたびに出力が更新される.
  • デフォルト設定のControllerLinking->Automaticでは,Manipulateが現行選択の一部である場合は常に,Manipulate中のコントロールは外部デバイスにある指定コントローラに対応する.
  • ゲームパッドのような外部デバイス上のコントローラは,ジョイスティック,ボタン等を含むことができる.
  • 外部コントローラ指定には次のようなものがある.
  • "X"または"X1"x x の主値
    "Y"または"Y1"y y の主値
    "Z"または"Z1"z z の主値
    "XY"または"XY1"{x,y}2軸コントローラの主値
    "XYZ"または"XYZ1"{x,y,z}3軸コントローラの主値
    "X2""Y2""XY2"xy{x,y}第2コントローラからの値
    "XCyclic"x循環的であると解釈される値
    "XAbsolute"x絶対的なコントロール位置からの値
    "B1""B2"b1b2トグルスイッチで切り換えられるボタンの状態
    "B1Absolute""B2Absolute"b1b2瞬間的なボタンの状態
  • 特定のWolframシステムセッションでアクティブなデバイスのための生の外部コントローラ指定名は,一般にControllerInformationを使って見付けることができる.
  • デフォルト設定のControllerMethod->Automaticでは,「X」のようなコントローラ指定は,デフォルトでジョイスティック等のコントロールの移動は対応する変数 x の値の変化率を決定することを意味する.例えばジョイスティックを押すことによって別の状態が選ばれると,コントロールの絶対的な位置が x の値を直接決定する.
  • XAbsolute」のようなコントローラ指定では,ジョイスティックのようなコントロールの絶対的な位置が,対応する変数 x の値を決定する.
  • XCyclic」のようなコントローラ指定では,一般にコントロールが範囲の端に達すると対応する変数 x の値は循環的にラップするとされる.
  • XYZ」のようなコントローラ指定は,例えば1つのコントローラ上の2つの異なるジョイスティックの軸のように外部デバイス上の複数のコントロールと関連している可能性がある.
  • ゲームパッドや2つのジョイスティックがあるその他のデバイス上では,「XY1」は一般に左側のスティックを指し,「XY2」は一般に右側のスティックを指す.ゲームパッドに「hat」コントロールがある場合は,一般に「XY3」でこれを指す.
  • B1」のようなボタンコントローラ指定は,対応するボタンが押されるたびにTrueFalseを切り換える.
  • B1Absolute」のような絶対指定はボタンが押されている間はTrueを,それ以外はFalseを返す.
  • BaseStyleおよびLabelStyleの設定値は,一般に現行スタイルシートの"Manipulate"スタイルと"ManipulateLabel"スタイルで与えられるデフォルトスタイルに加えられる.

例題

すべて開くすべて閉じる

  (4)

連続するパラメータを操作する:

離散的なステップでパラメータを操作する:

2つのパラメータを操作する:

パラメータにデフォルト値と名前を与える:

スコープ  (29)

コンテンツ  (6)

数を含む任意のタイプの内容を操作する:

式:

プログラム:

2Dグラフィックス:

3Dグラフィックス:

コントロール:

コントロール  (12)

Checkboxを含むいろいろな標準的コントロールを使う:

SetterBar

各要素にラベルが付いたSetterBar

Locator

複数のLocatorオブジェクト:

外観をカスタマイズしたLocatorオブジェクトを操作する:

不可視のLocatorオブジェクトを操作し,グラフィックス中でさらにカスタマイズする:

Clickで追加的なロケータが作れるようにする:

Slider2D

InputField

IntervalSlider

ColorSlider

任意の数のコントロールを使う:

RowあるいはGrid等の構造の内側でControlを使ってコントロールを任意の方法でレイアウトする:

ControlTypeを使ってコントロールのタイプを指定する:

純関数を使ってカスタムのコントロールタイプを書く:

1つの変数を複数のコントロールとリンクさせる:

プレゼンテーション  (8)

個々のコントロールにデフォルト値と注釈を使う:

タイプセット式やグラフィックスを含め,任意のタイプの式を注釈として使う:

注釈を動的に更新する:

ManipulateコントロールをDelimiterItem等を使って分割する:

ControlPlacementを使って個々のコントロールを置く:

ControlPlacementと注釈要素の両方を使う:

動的に更新された注釈も使う:

注釈にはControlオブジェクトや他のレイアウト構造を含ませることができる:

コントローラデバイス  (3)

デフォルトで,コントローラは選択されている場合にだけManipulateに影響を与える.これを上書きする場合にはAll を使う:

ControllerPathを使って使用するコントローラのクラスを指定する:

ControllerMethod"Absolute"にして相対的ではなく絶対的な関連に焦点を当てる:

一般化と拡張  (2)

パラメータを変えながら,3Dグラフィックスをインタラクティブに回転させることができる:

さまざまな数のロケータを設定する:

オプション  (68)

Alignment  (1)

予め設定された値を使う:

AppearanceElements  (2)

デフォルトで,Manipulateは1つのManipulatorしか含んでいない:

AppearanceElementsを使ってもっと多くのコントロールが表示されるように指定する:

AutoAction  (2)

デフォルトで,スライダーエリア内でクリックされるまで値は変化しない:

AutoActionにすると,マウスがスライダーエリアの上に来ると値が変化する:

AutorunSequencing  (4)

「Manipulate」メニューの「自動実行」を選ぶと,変数が自動的に流される:

AutorunSequencingを使って自動実行中の変数順を制御する:

各変数に別々の持続時間を指定する(デフォルトは5):

Allを指定して,すべての変数を同時に流すようにする:

BaselinePosition  (1)

周囲のテキストと揃える:

ContentSize  (1)

固定コンテンツサイズを指定する.必要であればスクロールバーを表示する:

ContinuousAction  (3)

デフォルトで,変数は継続的に更新される:

ContinuousActionFalseにすると,変数はコントロールがリリースされたときにだけ更新されるようになる:

これをNoneにしても「更新」ボタンがクリックされるまでコンテンツは更新されない:

ControllerLinking  (5)

デフォルトで,オブジェクトが選択されると出力は外部コントローラに反応する:

Fullを使ってオブジェクトが現行選択の中にある場合にのみ出力が反応するようにする:

Allを使うことで出力が常に外部コントローラに反応するようになる:

Trueを使うことで,ノートブックが焦点になるたびに出力が反応するようになる:

Falseを使うことで,出力は決して外部コントローラに反応しなくなる:

ControllerMethod  (2)

デフォルトで,変数はコントローラデバイスの適当な変数に関連付けられる:

ControllerMethod"Absolute"に設定して相対的ではなく絶対的な関連を強制する:

ControllerPath  (6)

デフォルトで,Manipulateはすべての必要なコントロールをサポートする最初のコントローラに反応する:

"Gamepad"を使って一般に2つのアナログコントロールを含むコントローラを指定する:

"Joystick"を使って1つの主アナログコントロールを含むコントローラを指定する:

"Multi-Axis Controller"を6つのアナログ自由度を持つようなコントローラに使う:

"Detachable"を使ってコンピュータの組込みではないコントローラを指定する:

"BuiltIn"を使ってコンピュータの組込みコントローラを指定する:

ControlPlacement  (2)

コントロールの位置を指定する:

ControlPlacementは注釈がControlを含んでいるかどうかにかかわらずこれに影響する:

ControlType  (11)

デフォルトで,Manipulateは指定された変数のコントロールにManipulatorを選ぶ:

ControlTypeを使って使用するコントロールタイプ(Noneを含む)を指定する:

SliderVerticalSlider

Slider2DLocator

RadioButtonSetterCheckboxPopupMenu

ColorSetterColorSlider

InputField

Manipulate変数のコントロールタイプを別々に指定する:

ControlTypeは個々の変数のコントロール指定と組み合せることができる:

ControlTypeControlで指定されたコントロールにも同じ様に影響を与える:

Automaticの設定のときは,適当なコントロールが選ばれる:

Deinitialization  (1)

Deinitializationを使ってManipulateが表示されなくなった後で式を評価する:

Deployed  (2)

デフォルトで,コンテンツとコントロールの両方がインタラクティブになっている:

Deployedを使ってインタラクティブ性をコントロールだけに限定する:

ExcludedContexts  (1)

デフォルトで,システムにとって内部的な特定のコンテキストは初期化オプションでは保存されない:

ExcludedContexts{}を使ってプロテクトされていない全シンボルの定義を保存する:

FrameLabel  (3)

下の部分にラベルを指定する:

下と左に別々のラベルを指定する:

各辺にラベルを指定する:

FrameMargins  (2)

コンテンツエリア周囲の余白に予め設定された値を使う:

または,明示的な値を使う:

ImageMargins  (2)

記号値を使う:

あるいは,明示的な値を使う:

IncludedContexts  (1)

シンボル定義を再帰的に含めることを"c1`""c2`"のコンテキストに限定する:

Initialization  (1)

Initializationを使ってManipulateの出力に必要な評価を指定する:

LabelStyle  (3)

ラベルのスタイルの詳細を指定する:

合成スタイルを使う:

枠ラベルはLabelStyleの影響を受ける:

LocalizeVariables  (2)

デフォルトで,変数は局所化される:

LocalizeVariablesを設定すると,変数は大域的に扱われるようになる:

Paneled  (1)

出力をパネル内で折り返すかどうかを指定する:

RotateLabel  (1)

垂直位置の枠ラベルの向きを調整するかどうかを指定する:

SaveDefinitions  (2)

デフォルトで,カーネルセッション間で外部定義は失われる:

SaveDefinitionsTrueにすると,外部定義が出力とともに保存される:

SynchronousInitialization  (2)

デフォルトで,初期化は同期して行われる:

同期しない初期化を強制する:

SynchronousUpdating  (2)

デフォルトで,評価は5秒後に時間切れとなる:

SynchronousUpdatingを使用不可とすると評価は時間切れにならない:

TrackedSymbols  (1)

更新に使われる記号を指定する:

UndoTrackedVariables  (1)

変更されると取消しメニューコマンドに反応する局所変数を指定する:

アプリケーション  (3)

操作表を定義する:

+,×,-,÷についての操作表を操作する:

グラフィックスオブジェクトの一般的な線形変換:

初期値をインタラクティブに操作して境界値問題を解く:

特性と関係  (5)

InputFormを使ってManipulateの入力を得る:

実際のオブジェクト上のInputFormもまた現状を反映する:

出力にSettingを使って表示された式にアクセスする:

Dynamicを使って更新を局所化し,式全体が更新されるのを防ぐ:

Appearance->"Open"を使ってすべてのManipulatorコントロールを表示する:

IntervalSliderオプションを使ってコントロールの動作を変える:

考えられる問題  (6)

プロットを操作するときは,PlotRangeが変化してサイズ変更の原因になることがある:

固定したPlotRangeを使用してサイズ変更を防ぐ:

プロットを操作するときは,目盛マークのサイズが変わってサイズ変更の原因になることがある:

固定したPlotRangeImagePaddingを使ってサイズ変更を防ぐ:

Manipulateは明示的な可視のパラメータだけしか「認識」しない:

fにおいてパラメータaは明示的に可視ではない:

fを再定義してパラメータaを明示的に含むようにする:

Manipulateは,それぞれの初期値が単一の点である限り,任意数のLocatorコントロールをサポートすることができる:

Manipulateが初期値が点のリストであるLocatorコントロールを含む場合は,そのManipulate はそれ以外のLocatorを含むことができない:

1点のロケータと複数点のロケータを同じManipulateで使うと,警告が生成される:

デフォオルトで,"System`"シンボルに付けられた定義は取得されない:

ExcludedContexts{}を使ってすべてのコンテキストから定義を取得する:

自分のシンボルに定義を付けることもできる:

メッセージのような副産物を生成する評価はメッセージノートブックに出力されることがある:

おもしろい例題  (4)

点電荷で生成される静電ポテンシャルを操作する:

簡単な多面体特性エクスプローラを作成する:

微分方程式の線形系 の解を可視化する:

さまざまな数のコントロールを作る:

Wolfram Research (2007), Manipulate, Wolfram言語関数, https://reference.wolfram.com/language/ref/Manipulate.html (2021年に更新).

テキスト

Wolfram Research (2007), Manipulate, Wolfram言語関数, https://reference.wolfram.com/language/ref/Manipulate.html (2021年に更新).

CMS

Wolfram Language. 2007. "Manipulate." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/Manipulate.html.

APA

Wolfram Language. (2007). Manipulate. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Manipulate.html

BibTeX

@misc{reference.wolfram_2024_manipulate, author="Wolfram Research", title="{Manipulate}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/Manipulate.html}", note=[Accessed: 16-June-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_manipulate, organization={Wolfram Research}, title={Manipulate}, year={2021}, url={https://reference.wolfram.com/language/ref/Manipulate.html}, note=[Accessed: 16-June-2024 ]}