Wolfram Archive
Wolfram Programming Lab is a legacy product.
All the same functionality and features, including access to Programming Lab Explorations, are available with Wolfram|One.
Start programming now. »
Try it now »
(no sign-in required)

Flag Colors

Find out which flag colors are most common in different parts of the world.

Run the code to get the flags of Europe. Try other regions, like “south america” or “northern europe”:

SHOW/HIDE DETAILS

Get an Entity that represents the countries of Europe. Type += to get a natural language input box and type “europe”. Run the code with +:

\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "europe", Typeset`boxes$$ = TemplateBox[{"\"Europe\"", RowBox[{"EntityClass", "[", RowBox[{"\"Country\"", ",", "\"Europe\""}], "]"}], "\"EntityClass[\\\"Country\\\", \\\"Europe\\\"]\"", "\"countries\""}, "EntityClass"], Typeset`allassumptions$$ = {{ "type" -> "Clash", "word" -> "europe", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "CountryClass", "desc" -> "a class of countries", "input" -> "*C.europe-_*CountryClass-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.europe-_*Word-"}}}, { "type" -> "SubCategory", "word" -> "europe", "template" -> "Assuming ${desc1}. Use ${desc2} instead", "count" -> "4", "Values" -> {{ "name" -> "Europe", "desc" -> "Europe", "input" -> "*DPClash.CountryEC.europe-_*Europe-"}, { "name" -> "EuropeSovereign", "desc" -> "sovereign states in Europe", "input" -> "*DPClash.CountryEC.europe-_*EuropeSovereign-"}, { "name" -> "EuropeExtended", "desc" -> "Europe with Russia and Turkey", "input" -> "*DPClash.CountryEC.europe-_*EuropeExtended-"}, { "name" -> "EuropeRussia", "desc" -> "Europe with Russia", "input" -> "*DPClash.CountryEC.europe-_*EuropeRussia-"}}}}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.276033`5.892505998971276, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{58., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)

Get the names of the countries of Europe:

\!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "europe", Typeset`boxes$$ = TemplateBox[{"\"Europe\"", RowBox[{"EntityClass", "[", RowBox[{"\"Country\"", ",", "\"Europe\""}], "]"}], "\"EntityClass[\\\"Country\\\", \\\"Europe\\\"]\"", "\"countries\""}, "EntityClass"], Typeset`allassumptions$$ = {{ "type" -> "Clash", "word" -> "europe", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "CountryClass", "desc" -> "a class of countries", "input" -> "*C.europe-_*CountryClass-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.europe-_*Word-"}}}, { "type" -> "SubCategory", "word" -> "europe", "template" -> "Assuming ${desc1}. Use ${desc2} instead", "count" -> "4", "Values" -> {{ "name" -> "Europe", "desc" -> "Europe", "input" -> "*DPClash.CountryEC.europe-_*Europe-"}, { "name" -> "EuropeSovereign", "desc" -> "sovereign states in Europe", "input" -> "*DPClash.CountryEC.europe-_*EuropeSovereign-"}, \ {"name" -> "EuropeExtended", "desc" -> "Europe with Russia and Turkey", "input" -> "*DPClash.CountryEC.europe-_*EuropeExtended-"}, { "name" -> "EuropeRussia", "desc" -> "Europe with Russia", "input" -> "*DPClash.CountryEC.europe-_*EuropeRussia-"}}}}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.330045`5.97011815131117, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{58., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["Name"]

Get images of the flags of the countries and give them the name flags:

flags = \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "europe", Typeset`boxes$$ = TemplateBox[{"\"Europe\"", RowBox[{"EntityClass", "[", RowBox[{"\"Country\"", ",", "\"Europe\""}], "]"}], "\"EntityClass[\\\"Country\\\", \\\"Europe\\\"]\"", "\"countries\""}, "EntityClass"], Typeset`allassumptions$$ = {{ "type" -> "Clash", "word" -> "europe", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "CountryClass", "desc" -> "a class of countries", "input" -> "*C.europe-_*CountryClass-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.europe-_*Word-"}}}, { "type" -> "SubCategory", "word" -> "europe", "template" -> "Assuming ${desc1}. Use ${desc2} instead", "count" -> "4", "Values" -> {{ "name" -> "Europe", "desc" -> "Europe", "input" -> "*DPClash.CountryEC.europe-_*Europe-"}, { "name" -> "EuropeSovereign", "desc" -> "sovereign states in Europe", "input" -> "*DPClash.CountryEC.europe-_*EuropeSovereign-"},\ {"name" -> "EuropeExtended", "desc" -> "Europe with Russia and Turkey", "input" -> "*DPClash.CountryEC.europe-_*EuropeExtended-"}, \ {"name" -> "EuropeRussia", "desc" -> "Europe with Russia", "input" -> "*DPClash.CountryEC.europe-_*EuropeRussia-"}}}}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.330045`5.97011815131117, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{58., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["FlagImage"]

HIDE DETAILS
flags = \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "europe", Typeset`boxes$$ = TemplateBox[{"\"Europe\"", RowBox[{"EntityClass", "[", RowBox[{"\"Country\"", ",", "\"Europe\""}], "]"}], "\"EntityClass[\\\"Country\\\", \\\"Europe\\\"]\"", "\"countries\""}, "EntityClass"], Typeset`allassumptions$$ = {{ "type" -> "Clash", "word" -> "europe", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "2", "Values" -> {{ "name" -> "CountryClass", "desc" -> "a class of countries", "input" -> "*C.europe-_*CountryClass-"}, { "name" -> "Word", "desc" -> "a word", "input" -> "*C.europe-_*Word-"}}}, { "type" -> "SubCategory", "word" -> "europe", "template" -> "Assuming ${desc1}. Use ${desc2} instead", "count" -> "4", "Values" -> {{ "name" -> "Europe", "desc" -> "Europe", "input" -> "*DPClash.CountryEC.europe-_*Europe-"}, { "name" -> "EuropeSovereign", "desc" -> "sovereign states in Europe", "input" -> "*DPClash.CountryEC.europe-_*EuropeSovereign-"},\ {"name" -> "EuropeExtended", "desc" -> "Europe with Russia and Turkey", "input" -> "*DPClash.CountryEC.europe-_*EuropeExtended-"}, \ {"name" -> "EuropeRussia", "desc" -> "Europe with Russia", "input" -> "*DPClash.CountryEC.europe-_*EuropeRussia-"}}}}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.330045`5.97011815131117, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{61., {7., 16.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\)["FlagImage"]

Get the dominant colors of the flags:
 

Note: run the code in the previous step first.

SHOW/HIDE DETAILS

This is the flag of the first country in the list, Austria:

flags[[1]]

Get its dominant colors:

DominantColors[flags[[1]]]

Get the dominant colors of each European flag by mapping DominantColors over the flags list:

DominantColors /@ flags

HIDE DETAILS
DominantColors /@ flags

Plot the colors. Try different point sizes:

SHOW/HIDE DETAILS

A “chromaticity plot” shows the positions of colors in a “color space”. Related colors are close together. Rotate the graphic with the mouse to see how the colors cluster in the color space:

ChromaticityPlot3D[DominantColors /@ flags]

Make the colors easier to see by increasing the size of the points:

ChromaticityPlot3D[DominantColors /@ flags, PlotStyle -> PointSize[.02]]

White colors in the plot don’t show up on a white background. Make the background light gray so you can see them:

ChromaticityPlot3D[DominantColors /@ flags, PlotStyle -> PointSize[.02], Background -> LightGray]

Add the RGB color space “gamut”, which shows the range of possible colors, to the plot:

ChromaticityPlot3D[{DominantColors /@ flags, "RGB"}, PlotStyle -> PointSize[.02], Background -> LightGray]

HIDE DETAILS
ChromaticityPlot3D[{DominantColors /@ flags, "RGB"}, PlotStyle -> PointSize[.02], Background -> LightGray]

Share It—Make a website that shows a country’s flag and its dominant colors:

SHOW/HIDE DETAILS

Here’s how to use Column to display a country’s flag with its dominant colors underneath:

country = \!\(\* NamespaceBox["LinguisticAssistant", DynamicModuleBox[{Typeset`query$$ = "ecuador", Typeset`boxes$$ = TemplateBox[{"\"Ecuador\"", RowBox[{"Entity", "[", RowBox[{"\"Country\"", ",", "\"Ecuador\""}], "]"}], "\"Entity[\\\"Country\\\", \\\"Ecuador\\\"]\"", "\"country\""}, "Entity"], Typeset`allassumptions$$ = {{ "type" -> "Clash", "word" -> "ecuador", "template" -> "Assuming \"${word}\" is ${desc1}. Use as \ ${desc2} instead", "count" -> "3", "Values" -> {{ "name" -> "Country", "desc" -> "a country", "input" -> "*C.ecuador-_*Country-"}, { "name" -> "Volcano", "desc" -> "a volcano", "input" -> "*C.ecuador-_*Volcano-"}, { "name" -> "TranslationData", "desc" -> " referring to translations", "input" -> "*C.ecuador-_*TranslationData-"}}}}, Typeset`assumptions$$ = {}, Typeset`open$$ = {1, 2}, Typeset`querystate$$ = { "Online" -> True, "Allowed" -> True, "mparse.jsp" -> 0.395302`6.048474005123957, "Messages" -> {}}}, DynamicBox[ToBoxes[ AlphaIntegration`LinguisticAssistantBoxes["", 4, Automatic, Dynamic[Typeset`query$$], Dynamic[Typeset`boxes$$], Dynamic[Typeset`allassumptions$$], Dynamic[Typeset`assumptions$$], Dynamic[Typeset`open$$], Dynamic[Typeset`querystate$$]], StandardForm], ImageSizeCache->{101., {7., 15.}}, TrackedSymbols:>{ Typeset`query$$, Typeset`boxes$$, Typeset`allassumptions$$, Typeset`assumptions$$, Typeset`open$$, Typeset`querystate$$}], DynamicModuleValues:>{}, UndoTrackedVariables:>{Typeset`open$$}], BaseStyle->{"Deploy"}, DeleteWithContents->True, Editable->False, SelectWithContents->True]\); Column[{country["FlagImage"], DominantColors[country["FlagImage"]]}]

Deploy a form that asks for a country and displays that country’s flag and its dominant colors:

CloudDeploy[ FormFunction[{"country" -> "Country"}, Column[{#country["FlagImage"], DominantColors[#country["FlagImage"]]}] &, "PNG" ], Permissions -> "Public" ]

Click on the link in the output to visit the site.

Tell the world about your creation by sharing the link via email, tweet, or other message.

HIDE DETAILS
CloudDeploy[ FormFunction[{"country" -> "Country"}, Column[{#country["FlagImage"], DominantColors[#country["FlagImage"]]}] &, "PNG" ], Permissions -> "Public" ]