Язык Wolfram Language

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

Экспонаты и художники, представленные в музее Современного искусства и живописи

Музей Современного искусства поддерживает открытый информационный портал на https://github.com/MuseumofModernArt/collection, содержащий подробную информацию о своих экспонатах. В данном примере мы создадим информационный ресурс на основе этих данных для изучения размеров картин в музее, а также продолжительности жизни художников, чьи работы выставлены в музее.

Загрузим скомпилированный набор информации из объекта-ресурса ResourceObject.

In[1]:=
Click for copyable input
momaStore = ResourceData[ ResourceObject[ Association[ "Name" -> "Museum of Modern Art Holdings and Artists", "UUID" -> "38f47cc0-667d-4988-8ebe-6c1bef23fdc6", "ResourceType" -> "DataResource", "Version" -> "1.0.0", "Description" -> "Holdings and artists of The Museum of Modern \ Art", "ContentSize" -> Association["EntityStore" -> 0], "ContentElements" -> {"EntityStore"}]]]
Out[1]=

Зарегистрируем созданный объект информации.

In[2]:=
Click for copyable input
PrependTo[$EntityStores, momaStore];

Получим список свойств художественных работ по типу объекта.

In[3]:=
Click for copyable input
EntityProperties["MoMAHolding"]
Out[3]=

Рассмотрим свойства конкретной картины.

In[4]:=
Click for copyable input
DeleteMissing[ EntityValue[Entity["MoMAHolding", "79802"], "PropertyAssociation" ]] // Take[#, 15] &
Out[4]=

Построим гистограмму дат завершения всех работ, выставленных в музее.

In[5]:=
Click for copyable input
DateHistogram[ DeleteMissing[EntityValue["MoMAHolding", "CompletionDate"]]]
Out[5]=

Информацию о типах работ в коллекции музея представим в виде таблицы.

In[6]:=
Click for copyable input
TextGrid[SortBy[ Tally[EntityValue["MoMAHolding", EntityProperty["MoMAHolding", "Classification"]]], Last] // Reverse, Dividers -> All, Background -> {Automatic, {{LightBlue, None}}}, Alignment -> {{Left, Decimal}, Automatic}]

Воспользуемся неявно определенным классом сущностей для получения информации о картинах музея.

In[7]:=
Click for copyable input
paintings = EntityClass[ "MoMAHolding", {EntityProperty["MoMAHolding", "Classification"] -> "Painting"}];

Построим гистограмму, отображающую соотношение величин длинны и ширины и площади картин музея. Распределение соотношения длинны и ширины картин является тримодальным.

In[8]:=
Click for copyable input
Table[Histogram[EntityValue[paintings, prop], PlotLabel -> prop], {prop, {EntityProperty["MoMAHolding", "AspectRatio"], EntityProperty["MoMAHolding", "Area"]}}]
Out[8]=

Теперь составим список свойств картин, связанных с художниками.

In[9]:=
Click for copyable input
EntityProperties["MoMAArtist"]
Out[9]=

Рассмотрим информацию по запросу "Винсент Ван Гог", через команду "PropertyAssociation".

In[10]:=
Click for copyable input
EntityValue[ Entity["MoMAArtist", "Vincent van Gogh"], "PropertyAssociation"]
Out[10]=

Визуализируем распределение количества работ всех художников, выставленных в музее.

In[11]:=
Click for copyable input
Histogram[ Length /@ EntityValue["MoMAArtist", "MoMAPieces"], {"Log", 20}]
Out[11]=

Исследуем среднюю продолжительность жизни умерших художников. Для этого, выберем художников, чьи даты рождения и смерти определены; посчитаем разницу между этими датами и вычислим среднее статистическое значение продолжительности жизни.

In[12]:=
Click for copyable input
deceasedArtists = Select[EntityList["MoMAArtist"], AllTrue[# /@ {"BirthDate", "DeathDate"}, DateObjectQ] &];
In[13]:=
Click for copyable input
Mean[DateDifference[#["BirthDate"], #["DeathDate"], "Year"] & /@ deceasedArtists] // N
Out[13]=

Построим коллажи некоторых произвольно выбранных музейных работ, произведенных в каждое десятилетие двадцатого века.

код на языке Wolfram Language целиком
In[14]:=
Click for copyable input
decadePieces = KeySelect[ GroupBy[Take[RandomEntity["MoMAHolding", 2000], 500], Floor[#1["CompletionDate"]["Year"], 10] &], Between[{1900, 2000 - 1}]];
In[15]:=
Click for copyable input
makePolygon[ year_ -> artworks_] := {Texture[ ImageCollage[ URLExecute[#["ThumbnailURL"]] & /@ Select[artworks, \[Not] MissingQ[#["ThumbnailURL"]] &, UpTo[8]]]], Lighting -> {{"Directional", White, {{0, year - 2, 0}, {0, year, 0}}}}, Opacity[.75], Polygon[{{-1, year/10, -1}, {1, year/10, -1}, {1, year/10, 1}, {-1, year/10, 1}}, VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]};
In[16]:=
Click for copyable input
Graphics3D[makePolygon /@ Normal[decadePieces], Axes -> True, AxesEdge -> {None, {1, 0}, None}, Ticks -> {None, Table[{190 + i, StringJoin["19", ToString[i], "0's"]}, {i, 0, 9}], None}, ImageSize -> Large]
Out[16]=

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

en es fr ja ko pt-br zh