Wolfram Language

Acceso enriquecido a la base de conocimiento

Analice, visualice y compare "superalimentos"

Los superalimentos son alimentos que son muy ricos en uno o más nutrientes. Este ejemplo define un conjunto de superalimentos, luego los contrasta con alimentos más "tradicionales" usando datos de alimentos de Wolfram Knowledgebase. Finalmente, construye una insignia apropiada para los alimentos dignos del epíteto "súper".

Primero, defina una lista de superalimentos que contenga los nutrientes por los cuales se les conoce.

In[1]:=
Click for copyable input
superfoodsRawData = {{"greek yogurt", {"TotalProtein"}}, {"quinoa", \ {"TotalProtein"}}, {"blueberries", {"TotalFiber", "VitaminC"}}, {"kale", {"TotalFiber", "Calcium", "Iron"}}, {"chia", {"Magnesium", "Iron", "Calcium", "Potassium"}}, {"oatmeal", {"TotalFiber"}}, {"broccoli", \ {"TotalFiber", "VitaminC", "TotalFolate"}}, {"strawberries", {"VitaminC"}}, {"salmon", \ {"TotalProtein"}}, {"watermelon", {"TotalSugar", "VitaminA", "VitaminC", "TotalCalories"}}, {"lima beans", {"TotalFiber"}}, {"edamame", {"TotalFiber"}}, {"spinach", {"Calcium", "VitaminK"}}, {"pistachios", {"TotalProtein", "TotalFiber", "Potassium"}}, {"eggs", {"TotalProtein"}}, {"almonds", \ {"TotalFiber", "Potassium", "Calcium", "VitaminE", "Magnesium", "Iron"}}, {"pumpkin", {"BetaCarotene"}}, {"apples", \ {"TotalFiber", "TotalCalories"}}, {"lentils", {"TotalProtein", "Iron"}}};

Convierta esto en Dataset para su cálculo fácil.

In[2]:=
Click for copyable input
superfoodsDatset = Dataset[<|"Food" -> #1, "Nutrients" -> #2|> & @@@ superfoodsRawData]
Out[2]=

Utilice Interpreter para obtener entidades de Wolfram Language para los superalimentos.

In[3]:=
Click for copyable input
superfoodsDatset1 = superfoodsDatset[All, KeySort[Prepend[#, <| "FoodEntity" -> Interpreter["Food"][#Food]|>]] &];

Cree una lista de los nutrientes.

In[4]:=
Click for copyable input
Union @@ Normal[superfoodsDatset1[[All, "Nutrients"]]]
Out[4]=

Cree reglas para convertir los nutrientes datos en sus propiedades apropiadas.

In[5]:=
Click for copyable input
superfoodsDatset2 = superfoodsDatset1 /. AssociationMap[ EntityProperty["Food", "Relative" <> # <> "Content"] &, Union @@ Normal[superfoodsDatset1[[All, "Nutrients"]]]]
Out[5]=

Encuentre los nutrientes más comunes en el Dataset.

In[6]:=
Click for copyable input
mostCommonProperties = superfoodsDatset2[Counts[Flatten[#]] &, "Nutrients"][TakeLargest[5]]
Out[6]=

Encuentre los superalimentos conocidos por ser altos en fibra y compárelos con otros 9000 alimentos. Visualice como un histograma alisado, donde la curva gris muestra la función de densidad de probabilidad del contenido de fibra para la mayoría de los alimentos.

In[7]:=
Click for copyable input
fiberDataset = superfoodsDatset2[ Select[ContainsAny[#Nutrients, {EntityProperty["Food", "RelativeTotalFiberContent"]}] &], KeyDrop["Nutrients"]];
muestre la entrada completa de Wolfram Language
In[8]:=
Click for copyable input
foodTypeColors = <| Entity["FoodType", "Kale"] -> Directive[ColorData[97, 1]], Entity["FoodType", "Apple"] -> Directive[ColorData[97, 2]], Entity["FoodType", "Broccoli"] -> Directive[ColorData[97, 3]], Entity["FoodType", "Blueberry"] -> Directive[ColorData[97, 4]], Entity["FoodType", "Edamame"] -> Directive[ColorData[97, 5]], Entity["FoodType", "LimaBean"] -> Directive[ColorData[97, 6]], Entity["FoodType", "Oatmeal"] -> Directive[ColorData[97, 7]], Entity["FoodType", "PistachioNut"] -> Directive[ColorData[97, 8]], Entity["FoodType", "Almond"] -> Directive[ColorData[97, 9]] |>;
In[9]:=
Click for copyable input
property = EntityProperty["Food", "RelativeTotalFiberContent"];
In[10]:=
Click for copyable input
data = DeleteMissing[ EntityValue[EntityClass["Food", "DataSource" -> "USDA"], property]];
In[11]:=
Click for copyable input
fiberData = Flatten[data] /. {Quantity[a_, ___] :> a};
In[12]:=
Click for copyable input
epilog = MapIndexed[ With[{prop = #FoodEntity[property], head = Log, foodType = First[Cases[#FoodEntity, Entity["FoodType", _String], Infinity, 1]]}, Tooltip[ { foodTypeColors[foodType], AbsoluteThickness[3], Line[{{head[First[prop]], 0}, {head[First[prop]], 80}}] }, #Food] ] &, Reverse@SortBy[Normal[fiberDataset], Last]];
In[13]:=
Click for copyable input
SmoothHistogram[ fiberData, Automatic, "PDF", PlotRange -> {{.02, .4}, Full}, ScalingFunctions -> {"Log", None}, AspectRatio -> 1/3, Epilog -> epilog, PlotStyle -> GrayLevel[0, .01], Filling -> Axis, FillingStyle -> GrayLevel[0, .15], PlotTheme -> {"HeightGrid"}, PlotLegends -> LineLegend @@ Transpose[Reverse /@ List @@@ Normal[foodTypeColors]], PlotLabel -> "Fiber content of \"superfoods\"", FrameLabel -> {"Fiber (g/g)"} ]
Out[13]=

Realice el mismo proceso para superalimentos ricos en proteína.

In[14]:=
Click for copyable input
proteinDataset = superfoodsDatset2[ Select[ContainsAny[#Nutrients, {EntityProperty["Food", "RelativeTotalProteinContent"]}] &], KeyDrop["Nutrients"]];
muestre la entrada completa de Wolfram Language
In[15]:=
Click for copyable input
foodTypeColors = <| Entity["FoodType", "Yogurt"] -> Directive[ColorData[97, 1]], Entity["FoodType", "Egg"] -> Directive[ColorData[97, 2]], Entity["FoodType", "Quinoa"] -> Directive[ColorData[97, 3]], Entity["FoodType", "PistachioNut"] -> Directive[ColorData[97, 4]], Entity["FoodType", "Salmon"] -> Directive[ColorData[97, 5]], Entity["FoodType", "Lentil"] -> Directive[ColorData[97, 6]] |>;
In[16]:=
Click for copyable input
property = EntityProperty["Food", "RelativeTotalProteinContent"];
In[17]:=
Click for copyable input
dataset = proteinDataset;
In[18]:=
Click for copyable input
data = DeleteMissing[ EntityValue[EntityClass["Food", "DataSource" -> "USDA"], property]];
In[19]:=
Click for copyable input
proteinData = Flatten[data] /. {Quantity[a_, ___] :> a};
In[20]:=
Click for copyable input
epilog = MapIndexed[ With[{prop = #FoodEntity[property], head = Log, foodType = First[Cases[#FoodEntity, Entity["FoodType", _String], Infinity, 1]]}, Tooltip[ { Replace[foodTypeColors[foodType], _Missing -> Black], AbsoluteThickness[3], Line[{{head[First[prop]], 0}, {head[First[prop]], 80000}}] }, #Food] ] &, Reverse@SortBy[Normal[dataset], Last]];
In[21]:=
Click for copyable input
SmoothHistogram[ proteinData, Automatic, "PDF", PlotRange -> {{.02, .4}, Full}, ScalingFunctions -> {"Log", None}, Epilog -> epilog, AspectRatio -> 1/3, PlotStyle -> GrayLevel[0, .01], Filling -> Axis, FillingStyle -> GrayLevel[0, .15], PlotLegends -> LineLegend @@ Transpose[Reverse /@ List @@@ Normal[foodTypeColors]], PlotTheme -> {"HeightGrid"}, PlotLabel -> "Protein content of \"superfoods\"", FrameLabel -> {"Protein (g/g)"} ]
Out[21]=

Cree una insignia para los superalimentos, comenzando con un conjunto de imágenes de superalimentos.

In[22]:=
Click for copyable input
GraphicsGrid[ Partition[ ims = EntityValue[ Cases[superfoodsDatset2[All, "FoodEntity"] // Normal, Entity["FoodType", _], Infinity], "Image"], UpTo[5]]]
Out[22]=

Como fondo, utilice una forma semejante a la de Superman.

In[23]:=
Click for copyable input
Entity["Lamina", "SupermanInsigniaLamina"]["Image"] // ImageCrop
Out[23]=

Utilice un proceso de imágenes simple para convertirla en un fondo.

In[24]:=
Click for copyable input
background = ColorNegate[ Binarize[Entity["Lamina", "SupermanInsigniaLamina"]["Image"], .99]]
Out[24]=

Cree una "nube de palabras" de superalimentos.

In[25]:=
Click for copyable input
wc = WordCloud[(RandomReal[{0.6, 1.2}] -> #) & /@ ims, background]
Out[25]=

Combine la nube de palabras con el fondo.

In[26]:=
Click for copyable input
ImageMultiply[{ColorReplace[background, Black -> LightGray], wc}]
Out[26]=

Ejemplos relacionados

de en fr ja ko pt-br ru zh