Язык Wolfram Language

Расширенный доступ к базе знаний Wolfram Knowledgebase

Визуализация языка программирования Wolfram Language

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

Создадим облако из терминов, фигурирующих в документации ресурса WolframLanguageData.

In[1]:=
Click for copyable input
WordCloud[ DeleteStopwords[ Flatten[TextWords[ WolframLanguageData["WolframLanguageData", "TextStrings"]]]]]
Out[1]=

Создадим коллаж из графиков, отображающих основные примеры полученной документации с помощью функции Plot.

In[2]:=
Click for copyable input
ImageCollage[ Cases[WolframLanguageData["Plot", "DocumentationBasicExamples"], c : Cell[_, "Output", ___] :> Rasterize[RawBoxes[c]], \[Infinity]], ImagePadding -> 10, Background -> Transparent]
Out[2]=

Теперь создадим коллаж из всех примеров графиков в полученной документации.

код на языке Wolfram Language целиком
In[3]:=
Click for copyable input
evaluate[l_List] := Module[{p}, p = l /. RawBoxes[Cell[BoxData[wlc_], "Input", ___]] :> ToExpression[wlc, StandardForm, Hold]; Block[Evaluate[ Select[Union[Cases[p, _Symbol, {-1}]], Quiet[Context[#] === "Global`"] &]], ReleaseHold /@ p]]
In[4]:=
Click for copyable input
ImageCollage[ Rasterize[#, ImageSize -> 100] & /@ Cases[Flatten[ evaluate /@ Flatten[WolframLanguageData["Plot", "DocumentationExampleInputs"][[All, -1]], 1]], _Graphics], ImagePadding -> 2] // Quiet
Out[4]=

Получим портреты людей, связанных с функцией LaplacianGaussianFilter в Wolfram Language.

In[5]:=
Click for copyable input
ImageAssemble[ PersonData[ WolframLanguageData["LaplacianGaussianFilter", "EponymousPeople"], "Image"]]
Out[5]=

Извлечем имена людей, фигурирующие в названии функций Wolfram Language.

In[6]:=
Click for copyable input
people = DeleteCases[ Union[Flatten[ WolframLanguageData[All, "EponymousPeople"]]], _Missing];

Извлечем информацию о месте их рождения.

In[7]:=
Click for copyable input
placedata = DeleteCases[ PersonData[ people, {"Image", "BirthPlace", "Name"}], {_, _Missing, _}];

Отметим эти места на карте мира.

код на языке Wolfram Language целиком
In[8]:=
Click for copyable input
GeoGraphics[ Tooltip[Point[#2], Column[DeleteCases[{##} /. e_Entity :> CommonName[e], _Missing]]] & @@@ placedata] // Quiet
Out[8]=

Извлечем даты рождения и смерти людей, чьи имена фигурируют в названии функций и символов Wolfram Language.

In[9]:=
Click for copyable input
timedata = Block[{EntityFramework`$EntityValueBatchSize = 300}, DeleteCases[ PersonData[ people, {"BirthDate", "DeathDate", "Name", "Image"}], {_Missing, __}]];

Создадим временную ось и отобразим полученную биографическую информацию.

код на языке Wolfram Language целиком
In[10]:=
Click for copyable input
formatdates[d1_, d2_] := Row[Riffle[Switch[#, Missing["Alive"], "present", _Missing, "????", _, DateString[#, {"MonthName", " ", "DayShort", ", ", "Year"}] ] & /@ {d1, d2}, "-"]]
In[11]:=
Click for copyable input
TimelinePlot[ Association @@ ((Tooltip[StringSplit[#3, " "][[-1]], Column[{#4, #3, formatdates[#1, #2]}]] -> #1) & @@@ Select[timedata, #[[1]] > DateObject[{1800}] &])]
Out[11]=

Родственные примеры

de en es fr ja ko pt-br zh