Wie kann man in Mathematica undokumentierte Optionen oder Optionswerte finden?

  • Mathematica hat viele undokumentierte oder schlecht dokumentierte Optionen.

    1. Wie geht man? über das Ausarbeiten, wenn es eine undokumentierte Option gibt, die ein bestimmtes Problem lösen könnte?
    2. Wie kann man herausfinden, was für ein Universum möglicher Werte die Option annehmen kann? (Dies gilt auch für Optionen, deren Vorhandensein dokumentiert ist, deren Gültigkeitsbereich jedoch nicht angegeben ist.)

    Im Hintergrund finden Sie eine Sammlung von Objekten, die ich und andere bisher gefunden haben:

    Grafiken

    Die Option Method ist eine Option für Graphics und verwandte Befehle wie BarChart. Es wird in den Anmerkungen in der Dokumentation erwähnt und erscheint in Options[Graphics], wird jedoch nicht als Option in der Dokumentation mit Beispielen aufgeführt. Es gibt viele Unteroptionen, von denen keine explizit dokumentiert ist.

    • Method -> {"ShrinkWrap" -> True} entfernt Whitespace dieses Mathematica fügt jeder Handlung einen winzigen Rand hinzu. (darauf von Sjoerd hingewiesen)

    • Method -> {"GridLinesInFront" -> True} macht, was es sagt (siehe Brett Champions Antwort auf diese Frage und dieser MathGroup-Thread ). Dynamic GridLines, die diese Option verwenden, sind in einem Großteil der grafischen Ausgabe von Wolfram | Alpha vorhanden -in-mathematica / 6806152 # 6806152 "> Zahlenleitungscode ).

    • Method -> {"AxesInFront" -> True} tut auch, was darin steht. (Siehe Kommentar von TomD zu Bretts Antwort )

    • Method -> {Refinement -> {ControlValue -> angle}} legt den Winkel fest, der entscheidet, wenn zwei Punkte in einer Zeichnung nicht weiter unterteilt werden - der Standardwert ist 5\[Degree]. (Siehe Yaros antworten Sie hier und die relevante Seite in Stan Wagons Buch . Außerdem eine Plot Versionsvergleich von Alexey )

    • Die Die Option "MessagesHead" wird verwendet, um den Ursprung von Anrufen nach Plot usw. zu verfolgen, die von abhängigen Plotfunktionen wie LogPlot, LogLinearPlot und DateListLogPlot erstellt werden. Auf diese Weise können die richtigen Optionen und Nachrichten übergeben werden zu und von der allgemeinen Funktion. Ein Beispiel für ihre Verwendung finden Sie in diese Frage .

    • Die Option ImageSizeRaw für verschiedene Zeichen- und Grafikfunktionen ist nicht dokumentiert, sondern erweist sich als wichtig für das Einbetten von CDFs in Webseiten .

    • PrivateFontOptions -> {"OperatorSubstitution" -> False}, als hier dokumentiert , stoppt Minuszeichen, Klammern und ähnliches in den speziellen Schriftarten von Mathematica und nicht in der ausgewählten Textschrift.

    • s0rce hat festgestellt, dass ScalingFunctions funktioniert für Liniendiagramme (ListPlot, Plot usw.). Mögliche Werte sind "Reverse", "Log" "Log10" - die letzte dieser Werte ist selbst nicht dokumentiert.

    • Nicht unbedingt eine Grafikfunktion, die jedoch häufig zum Erstellen verwendet wird schön aussehende Ticks , FindDivisions hat eine undokumentierte Method -Option: Zum Beispiel , FindDivisions[{-1.8,8.9}, 6, Method -> "ExtendRange"] gibt die umfassende Division [&&26 an&&] e>, wie doe s Method -> Automatic; jede andere Einstellung für Method gibt die inneren Abteilungen : {0, 2, 4, 6, 8} an.

    • Sie können den Betrag a PieChart steuern, der aus dem Diagramm angezeigt wird, wenn Sie mit g SetOptions[Charting'iSectorChart, {PopoutSpacing -> n}] klicken, wobei e n ist numerisch. Der Standardwert ist 0,2; Versuchen Sie zum Spaß eine negative Zahl. Sie können dieses Verhalten mithilfe von g SetOptions[Charting'SectorChart, {Popout -> False}] ganz unterdrücken (ändern Sie in beiden Beispielen das Anführungszeichen in eine Backquote).

    • Für einige Plot -Funktionen Die Einstellung für die Option e PlotStyle kann sowohl als Funktion als auch als Liste von Grafikanweisungen angegeben werden. Die früheste Referenz für dieses undokumentierte Feature ist diese Antwort von Simon Woods . Weitere Beispiele für die Verwendung von s PlotStyle für Plot und d ParametricPlot sind: this , dieses , dieses und dieses .

    Panels

    Wie in eine frühere Frage . Diese Optionen werden in einigen Grafiken / Panels angezeigt, werden jedoch nicht erkannt, wenn sie explizit verwendet werden. n Panel, Graphics oder verwandte Strukturen:

      LineColor FrontFaceColor BackFaceColor GraphicsColor

    Legenden

    Hier gibt es viele undokumentierte Optionen:

      AssembleLegendContainer < / li> BubbleScaleLegend ColorGradientLegend ContourLegend CurveLegend GridLegend Legend && 48&&] e> : SetOptions[Legending`GridLegend, Legending`LegendContainer -> Identity] entfernt die Grenze von Legenden (Dank an Mr. Wizard) LegendHeading LegendImage < / li> LegendItemLayout LegendLayout LegendPane LegendPosition
      23 May 2017
      Terry Lorber
6 answers
  • Sie können nach Optionen suchen, die in Options einer Funktion angezeigt werden, aber keine ::usage -Meldung enthalten. Natürlich sind einige der Ergebnisse in der Hilfe dokumentiert. Sie haben einfach keine Verwendungsmeldung. Hier ist eine Funktion, um dies zu tun:

     undoc[x_Symbol]:=Select[Options[x],!StringQ@MessageName[Evaluate@First@#,"usage"]&];
    undoc[_] = {};
    
    (* e.g. *)
    undoc[Plot]
    Out[3]= {Evaluated->Automatic,ImageSizeRaw->Automatic}
     

    Im Folgenden wird diese Funktion auf alle Symbole im System -Kontext ausgeführt. und präsentiert die Ergebnisse in einem Raster. Einige Funktionen (wie Cell) verfügen über umfangreiche Optionslisten ohne Nutzungsnachrichten. Diese werden übersprungen (es wird nur der Funktionsname ausgedruckt), um Platz zu sparen.

     Grid[Select[{#,undoc[Symbol[#]]}&/@Names["System`*"],
    Last@#=!={}&&(Length@Last@#<10||Print@First@#)&],Frame->All]
     

    Wie kann man in Mathematica undokumentierte Optionen oder Optionswerte finden?

    19 May 2012
    Simon Woods
  • 1. Die Erkennung kann durch Trace und verwandte Tools unterstützt werden.

    2 . Einfaches Beobachten und Experimentieren. Einfach bedeutet nicht einfach.


    Um beispielsweise die Antwort auf " Kann der Rahmenrand einer BarChart-Legende entfernt werden? " Ich habe verwendet:

     BarChart[{{1, 2, 3}}, ChartLegends -> {"A", "B", "C"}] // Trace // InputForm
     

    InputForm wurde verwendet, um Details von Graphics -Objekten als Text anzuzeigen und zu durchsuchen.

    In der langen Ausgabe, die produziert wurde, habe ich zuerst nach Framed gesucht, und dann fing ich an, rückwärts zu arbeiten, um zu sehen, was es auslöste. Nach einigem Graben, Zurückgehen und ein paar Sackgassen stieß ich auf:

     {Legending`LegendDump`container, Legending`LegendDump`position, 
      Legending`LegendDump`layout, Legending`LegendDump`appearance} = 
     OptionValue[
      Legending`GridLegend, {LegendAppearance -> Automatic, 
       Legending`LegendPosition -> 
        Automatic}, {Legending`LegendContainer, Legending`LegendPosition, 
       Legending`LegendLayout, LegendAppearance}]
     

    Ich hatte beobachtet oder vermutet, Von meinem Graben aus betraf Legending`LegendDump`container die Komponente Framed, und hier (an einer Stelle) wurde der Wert festgelegt. Experimente haben gezeigt, dass diese Option zumindest in einigen Fällen Auswirkungen auf das gewünschte Objekt hatte:

     SetOptions[Legending`GridLegend, Legending`LegendContainer -> "Nonsense"]
    
    BarChart[{{1, 2, 3}}, ChartLegends -> {"A", "B", "C"}]
     

    Sehen Sie, wie sich dieses Verhalten verhält, es war naheliegend, Identity auszuprobieren. Tests mit mehreren Balkendiagrammen deuteten darauf hin, dass es zumindest etwas dauerhaft war. Deshalb habe ich es als Antwort gepostet.

    23 May 2017
    mbillard
  • Ich finde SetSystemOptions["PackedArrayOptions" -> {"UnpackMessage" -> True}] nützlich: Es wird eine Nachricht ausgegeben, wenn ein gepacktes Array entpackt wird. Dies kann automatisch geschehen und manchmal die Dinge stark verlangsamen. Dies ist nützlich in Situationen wie diesem oder diese . Eine Möglichkeit, herauszufinden, dass es eine solche Option gibt, ist "PackedArrayOptions" /. SystemOptions[].

    Tatsächlich zeigt SetSystemOptions[] eine Reihe interessanter und nicht dokumentierter Optionen. Zum Beispiel gibt "CompileOptions" /. SystemOptions[] eine Reihe von Optionen an, wann etwas kompiliert wird, ob Berichte erstellt werden sollen oder nicht, wenn etwas nicht kompiliert werden kann, oder Teile davon externe Definitionen aufrufen, ob kompilierte Funktionen, die innerhalb einer kompilierten Funktion aufgerufen werden, eingebettet werden sollen. usw.

    23 May 2017
    Shog9
  • John Fultz hat eine Antwort gepostet , die über eine undokumentierte Option verfügte.

     CellPrint[{
      Cell["Click to open the section", "Section", 
           System`WholeCellGroupOpener -> True],
      TextCell["Some text"]}]
     

    Dies erzeugt eine Abschnittszelle, die sich öffnet und schließt, wenn Sie auf eine beliebige Stelle klicken.

    23 May 2017
    4 revs, 3 users 77%Simon
  • Optionen für die NIntegrate-Methode

    Es gibt viele Method -Einstellungen, die in NIntegrate verwendet werden sollen, und viele, aber nicht alle ihre Unteroptionen sind mit dem Tutorial zu NIntegrate . Einige davon finden Sie unter

     ?NIntegrate`StrategiesDump`*Options
     

    Wie kann man in Mathematica undokumentierte Optionen oder Optionswerte finden?

    Andere können gefunden werden durch

     ?NIntegrate`StrategiesDump`*Properties
     

    Wie kann man in Mathematica undokumentierte Optionen oder Optionswerte finden?

    Beachten Sie, dass die Optionen in dem dargestellten Fall den Optionen Method von PiecewiseExpand und

     SystemOptions["PiecewiseOptions"]
    
    (* {"PiecewiseOptions" -> {"BooleanResult" -> Automatic, 
         "ConditionSimplifier" -> Automatic, 
         "DirectExpansionCrossovers" -> {10, 7., False}, 
         "EliminateConditions" -> True, "ExpandSpecialPiecewise" -> True, 
         "FactorInequalities" -> True, "FullStrengthInference" -> False, 
         "OrderlessConditions" -> Automatic, "Parallel" -> Automatic, 
         "RefineConditions" -> True, "Simplification" -> True, 
         "StrictCalculus" -> Automatic, "ValueSimplifier" -> Automatic}} *)
     

    Beachten Sie auch, dass die Angabe einer falschen Option für NIntegrate -Methoden die Liste der Eigenschaften als ergibt Fehlermeldung:

     NIntegrate[x, {x, 0, 1}, Method -> {"InterpolationPointsSubdivision", "Foo" -> True}]
     

    NIntegrate::moptxn: Die Option Foo der Methode InterpolationPointsSubdivision ist keine von {MaxSubregions, Method, SymbolicProcessing}. & gt; & gt;

    25 December 2013
    Jason Watkins
  • Möglicherweise enthält die folgende Datei mehr Optionen, obwohl ich zugegebenermaßen nicht viel Zeit darauf verwendet habe. Dies ist die Datei, die die Informationen enthält, die von SyntaxInformation

     ToFileName[{$InstallationDirectory, "SystemFiles", "Kernel", 
          "TextResources", $Language}, "FunctionInformation.m"]
     

    Diese Datei enthält viele Optionen sowohl "Symboloptionen" als auch "Zeichenkettenoptionen". Nicht alle "Arten von Optionen" sind hier aufgelistet, zumindest ist die "Option" "OptionNames" von SyntaxInformation hier nicht vorhanden. Die Datei scheint auch keine verschachtelten Optionen zu enthalten.

    03 November 2015
    user98534