Проблемы с передачей опций в специализированных функциях построения графиков для Mathematica

Это должно быть быстро для эксперта, но я относительно новичок в определении функций с опциями. Вот схема того, что я пробовал, я объясню после того, как покажу код:

MyPlotFunction[params_, optionalparameter_List:{1,2,3}, opts:OptionsPattern[]]:=
    Plot [ stuff, {x,0,1},  Evaluate@FilterRules[{opts},Options@Plot]];

Options[MyPlotFunction] = {  PlotRange->{-5,5}, Frame->True, ... other plot options};

Есть четыре небольшие тонкости:

  1. В моей функции есть необязательный параметр, который должен быть списком целых чисел.
  2. Я хочу иметь возможность вызывать функцию с любым параметром Plot, особенно используя значения, отличные от значений по умолчанию, указанных в третьей строке.
  3. Я хочу иметь значения по умолчанию для некоторых опций.
  4. Потенциально я хочу поместить в функцию другие опции, так что не гарантируется, что все опции должны быть переданы в plot.

Но то, что я описал выше, не работает. Опции по умолчанию, которые я установил, игнорируются, но они появляются в ??MyPlotFunction информации для моей функции. Я приведу примеры, если вы еще не заметили ошибку.

Edit: Примеры, которые не работают:

  1. SimplePlot[t_,opts:OptionsPattern[{PlotRange->{-4,4},Frame->True}]]:= Plot[2x+t,{x,0,1},opts]; Неудача, опция по умолчанию игнорируется.

  2. SimplePlot[t_,opts:OptionPattern[]]:= Plot[2x+t],{x,0,1},opts]; Options[SimplePlot] = {PlotRange->{-4,4},Frame->True}; Неудача, опция по умолчанию игнорируется.

  3. SimplePlot[t_,opts__:{PlotRange->{-4,4},Frame->True}]:= Plot[2x+t,{x,0,1},opts]; Опции по умолчанию работают с голым вызовом, но если одна из этих опций или любая другая опция plot переопределяется, остальные опции по умолчанию теряются.

5
задан Mr.Wizard 17 December 2011 в 01:19
поделиться