2014-01-31 3 views
0

У меня есть список данных, называемый DataList. Я могу построить данные с помощью ListPlot и назовите этот участок после ввода списка, как это:Как я могу получить ярлык графика от имени составленного списка?

ListPlot[DataList, PlotLabel -> ToString[HoldForm[DataList]]]

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

plot[input_] := ListPlot[input, PlotLabel -> ToString[HoldForm[input]]]

Однако, когда я входной список прямо сейчас, то «PlotLabel» не будет отражают имя списка, в который я вставлял, а скорее содержимое этого списка.

Есть ли способ извлечь имя списка/выражения до того, как функция его оценит?

Любые другие идеи, чтобы обойти проблему?

Я очень благодарен за любые советы.

ответ

1
DataList = {1, 2, 5, 4, 3, 7}; 
SetAttributes[plot, HoldFirst]; 
plot[input_] := ListPlot[input, PlotLabel -> ToString[Unevaluated[input]]]; 
plot[DataList] 

...PlotWithPlotLabel DataList snipped... 
+0

По какой-то причине, он не будет работать, когда я карту «сюжет» -функция в нескольких списках данных, например: Карты [сюжет, {DataList01, DataList02, ...}] Но если я также дам plot атрибут «Listable», я могу хотя бы сделать это: plot [{DataList01, DataList02, ...}] – Stian

+0

@Stian Это потому, что 'Map' не содержит свой второй аргумент, поэтому, например, 'DataList01' будет оцениваться. Вы можете предотвратить это с помощью «Map [plot, Unevaluated @ {DataList01, DataList02, ...}]'. Я рекомендую вам задать вопрос о добавлении на выделенный сайт [Mathematica.SE]. –

+0

Bill, +1, и я также призываю вас присоединиться к нам на [Mathematica.SE]. –