New in Visualization

Brett Champion
Wolfram Research

The Visualization Team

TextGrid[Transpose@{
{"", "Team Member", "Talk", "Office Hours", "Ask Me About..."},
{,"Brett", "Now!","2–3pm Friday","Anything"},
{,"MinHsuan", "9:30am Thursday","10–11am Thursday","Labeling"},
{,"Nirmal", "3:30pm Thursday","4–5pm Thursday","Scientific Vis"},
{,"Emmanuel", "4:30pm Friday","11am–noon Friday","Geo Vis"},
{,"Tim", "—","—","Themes and Aesthetics"},{,"Rob", "—","—","Quality Assurance"}
},Frame->All]

Overview

General

Rasterize Imagification

ViewProjection

Core Visualization

Scaling Functions for Plot3D, ContourPlot, DensityPlot

StackedPlots, PlotLayout

Labeling

Callouts for Charts

Faster, Better, Labeling

Geo Visualization

GeoBubbleChart

Specialized Visualizations

FeatureSpacePlot

Themes for AnatomyPlot3D

General: Rasterize

Rasterize now returns images by default, instead of graphics:

Rasterize[Graphics3D[Sphere[]]]

{Head[%],ByteCount[%]}

Rasterize[Graphics3D[Sphere[]],"Graphics"]

{Head[%],ByteCount[%]}

General: ViewProjection

The default projection uses perspective – the various edges of the box aren’t parallel on screen:

Plot3D[Sin[x]Cos[y],{x,0,10},{y,0,10}]

With an orthographic projection, there’s no perspective – box edges are parallel on screen:

Plot3D[Sin[x]Cos[y],{x,0,10},{y,0,10},ViewProjection->"Orthographic"]

This can be useful for viewing straight at a particular face:

Plot3D[Sin[x]Cos[y],{x,0,10},{y,0,10},ViewProjection->"Orthographic",ViewPoint->Front]

Plot3D[Sin[x]Cos[y],{x,0,10},{y,0,10},ViewPoint->Front]

Core: Scaling Functions [11.1]

Plot3D[Max[x,y],{x,0,3},{y,0,3},MeshFunctions->{#3&},ScalingFunctions->{"Log",None,"Reverse"},AxesLabel->{"x","y","z"}]

ContourPlot[x+y,{x,0,3},{y,0,3},MeshFunctions->{#3&},ScalingFunctions->{"Log","Reverse"},AxesLabel->{"x","y","z"}]

Core: Stacked Plots [11.2]

By default ListLinePlot draws multiple datasets in an overlapping fashion:

data1={5,3,7,9,10,8,5,2,10,10,7,6,5,8,2,9,5,9,9,6};
data2={8,4,5,10,2,7,3,9,9,10,2,8,2,6,5,6,10,9,5,9};

ListLinePlot[{data1, data2}]

PlotLayout can be used to stack the data:

ListLinePlot[{data1, data2},PlotLayout->"Stacked"]

This is effectively the same as summing the data, but handled automatically:

ListLinePlot[{data1, data1+data2}]

StackedListPlot does this automatically, and includes intelligent filling:

StackedListPlot[{data1,data2}]

StackedListPlot[{data1^2,data2^2},ScalingFunctions->"Log"]

Stack the data in a way that adds to 100%

StackedListPlot[{data1,data2},PlotLayout->"Percentile"]

Things get interesting when the data is irregular:

d1={{6.7,5.4},{7.8,8.1},{8.1,7.0},{8.9,7.3},{10.,9.}};d2={{5.4,5.9},{7.8,5.6},{8.,7.8},{8.5,5.2},{8.6,7.}};d3={{6.2,8.4},{6.3,5.8},{6.4,9.9},{6.5,5.2},{8.1,8.0}};

StackedListPlot[{d1,d2,d3},PlotMarkers->Automatic]

We also have a date version:

StackedDateListPlot[{data1,data2},{Automatic,Today,"Day"}]

Labeling: Chart Callouts [11.1]

We added callouts to Plot, ListPlot, and friends in V11.0:

Plot[{Callout[Sin[x],Sin[x],Above],Callout[Cos[x],Cos[x],Below]},{x,0,2 π}]

In V11.1 we added support for callouts to the 2D charts:

BarChart[Callout[#,Unique["text"]]&/@RandomReal[{0,1},5]]

BarChart[Table[Callout[RandomReal[{0,1}],Unique["text"],After],2,5],ChartLayout->"Stacked"]

Pie chart labels are arranged to not overlap each other.

PieChart[Callout[#,RandomWord[]]&/@RandomReal[{0,1},10]]

The default position for callouts for bubbles includes the possibility of putting the label inside the bubble.

BubbleChart[Callout[#,Round[#[[3]],0.01]]&/@RandomReal[1,{10,3}]]

Labeling: Improved Performance [11.2]

Faster Labeling

Big improvements in how quickly we can label points – 1000 points went from 3 minutes to 1 second.

Table[
SeedRandom[1];
data=Table[Labeled[RandomReal[100,2],i],{i,n}];
{time,plot}=AbsoluteTiming[ListPlot[data]];
Column[{ToString[n]<>" points",Rasterize[plot],time}],{n, {50,100,250,500,1000}}]

V11.1

V11.2

More Labels

V11.2 is able to label more points, and uses tooltips on points that can’t be labeled.

SeedRandom[1];
data=Table[Labeled[RandomReal[100,2],i],{i,250}];
ListPlot[data]

V11.1

V11.2

FeatureSpacePlot [11.1]

FeatureSpacePlot uses DimensionReduce to place similar objects near each other.  In the example  below, flags are roughly organized by structural elements.

FeatureSpacePlot[EntityValue["Country","FlagImage"],Background->LightGray]//Magnify

If we change the feature extractor, we can instead classify the flags by color instead:

FeatureSpacePlot[DeleteMissing@EntityValue["Country","FlagImage"],Background->LightGray,FeatureExtractor->"PixelVector"]//Magnify

GeoBubbleChart [11.1]

Bubble chart of the cities in the UK, sized by population.

data=Table[{city,city["Population"]},{city,CountryData["UnitedKingdom","LargestCities"]}];
GeoBubbleChart[data]

GeoBubbleChart inherits all the features of BubbleChart, such as the new labeling features.

GeoBubbleChart[{(Entity["Miami", Entity["City",{"Miami","Florida","UnitedStates"}], "Entity[\"City\", {\"Miami\", \"Florida\", \"UnitedStates\"}]", "city"])->50,(Entity["New York City", Entity["City",{"NewYork","NewYork","UnitedStates"}], "Entity[\"City\", {\"NewYork\", \"NewYork\", \"UnitedStates\"}]", "city"])->200,(Entity["Seattle", Entity["City",{"Seattle","Washington","UnitedStates"}], "Entity[\"City\", {\"Seattle\", \"Washington\", \"UnitedStates\"}]", "city"])->100,(Entity["Los Angeles", Entity["City",{"LosAngeles","California","UnitedStates"}], "Entity[\"City\", {\"LosAngeles\", \"California\", \"UnitedStates\"}]", "city"])->300},ChartLabels->Callout[{"Miami","NY","Seattle","LA"},Automatic]]

Special: AnatomyPlot3D Themes [11.2]

AnatomyPlot3D now supports all the usual plot themes.

“Detailed” includes a coordinate grid and uses tooltips to label things:

AnatomyPlot3D[LinguisticAssistant,PlotTheme->"Detailed"]

“Scientific” uses a unique color for each anatomical element:

AnatomyPlot3D[LinguisticAssistant,PlotTheme->"Scientific"]

There are some themes that only apply to AnatomyPlot3D.
“Vintage” is reminiscent of ye olde drawings.

AnatomyPlot3D[LinguisticAssistant,PlotTheme->"Vintage"]

“XRay” simulates the appearance of an x-ray, where bones are the most prominent features.

AnatomyPlot3D[LinguisticAssistant,PlotTheme->"XRay"]