Advances in Visualization

Brett Champion, Wolfram Research

Related Visualization Talks

Geo Visualization

11am, Fighting Illini
Emmanuel Garces-Medina

Complex-Valued Visualization

1pm, Fighting Illini
Nirmal Malapaka

Automated Labeling in Visualization

4:30pm, Fighting Illini
MinHsuan Peng

Visualizing Uncertainty

V12.0

List plots and bar charts can show error bars for data with uncertainty:

around=Table[Around[RandomReal[{5,10}],RandomReal[{1,2}]],15]

{ListPlot[around],BarChart[around]}

Use styled bars, bands, or ellipses to display the uncertainty:

{ListLinePlot[around],ListLinePlot[around,IntervalMarkers->"Bands",PlotRange->{0,12}]}

{ListLinePlot[around,IntervalMarkersStyle->Black],ListLinePlot[around,IntervalMarkers->"Bands",IntervalMarkersStyle->Opacity[1,Yellow],]}

Error can be in multiple dimensions:

around2=Table[Around[RandomReal[{5,10}],RandomReal[{0.5,1}]],15,2]

{ListPlot[around2,PlotRange->All],
ListPlot[around2,IntervalMarkers->"Ellipses",PlotRange->All]}

Correlated effects will result in rotated ellipses:

varound=Table[MeanAround[RandomReal[1,{5,2}]],5]

ListPlot[varound,IntervalMarkers->"Ellipses",PlotRangePadding->Scaled[0.2]]

V12.1

Adding support for some of the 3D visualization functions:

around3h=Table[Around[RandomReal[{5,10}],RandomReal[{1,2}]],8,8];

{ListPointPlot3D[around3h,],ListPlot3D[around3h,]}

around3t=Table[Around[RandomReal[{5,10}],RandomReal[{1,2}]],15,3];

ListPointPlot3D[around3t,]

Multi-panel Displays

Display each dataset in its own panel, with shared scales:

cities={LinguisticAssistant,LinguisticAssistant,LinguisticAssistant};data=AssociationMap[WeatherData[#,"Temperature",{"Jan 1 2019",Today,"Day"}]&,cities]

DateListPlot[data,PlotLayout->"Column",]

RegionPlot3D

Multiple 3D regions can now plotted at the same time:

RegionPlot3D[{x^2+y^2<1,y^2+z^2<1,x^2+z^2<1},{x,-2,2},{y,-2,2},{z,-2,2}]

ContourPlot3D

Contour plots in 3D can now be created over non-rectangular domains:

ContourPlot3D[x^2+y z, {x,y,z}∈Ball[]]

ContourPlot3D[x^2+y z, {x,y,z}∈Ball[],RegionBoundaryStyle->None]

ContourPlot3D[x^2+y z, {x,y,z}∈Ball[],RegionBoundaryStyle->Green]

Shading

Use hatched fills in plots and charts:

BarChart[RandomInteger[{5,10},{5,3}],ChartStyle->{Hatching[Pi/4],Hatching[-Pi/4],Hatching[0]}]

StackedListPlot[RandomReal[{1,10},{3,20}],PlotStyle->Black,FillingStyle->{1->Directive[Opacity[1],Hatching[Pi/4]],2->Directive[Opacity[1],Hatching[-Pi/4]],3->Directive[Opacity[1],Hatching[0]]}]

Taking Vectors in New Directions

VectorPlot[{y-x(((1-(x^2)-(y^2)))^2),-x-y(((1-(x^2)-(y^2)))^2)},{x,-3,3},{y,-3,3}]

Row[{,}]

VectorScaling

Control how the arrow lengths scale with the norm of the vector:

VectorPlot[{y-x(((1-(x^2)-(y^2)))^2),-x-y(((1-(x^2)-(y^2)))^2)},{x,-3,3},{y,-3,3}]

VectorPlot[{y-x(((1-(x^2)-(y^2)))^2),-x-y(((1-(x^2)-(y^2)))^2)},{x,-3,3},{y,-3,3},VectorScaling->Automatic]

VectorRange

VectorPlot[(({x,y})/((Norm[{x,y}])^3)),{x,-3,3},{y,-3,3}]

By default we limit extreme norms:

VectorPlot[(({x,y})/((Norm[{x,y}])^3)),{x,-3,3},{y,-3,3},PlotLegends->Automatic]

Control how “clipped” norms are displayed:

VectorPlot[(({x,y})/((Norm[{x,y}])^3)),{x,-3,3},{y,-3,3},ClippingStyle->Black]

VectorPlot[(({x,y})/((Norm[{x,y}])^3)),{x,-3,3},{y,-3,3},ClippingStyle->None]

Specify the range of norms to allow:

VectorPlot[(({x,y})/((Norm[{x,y}])^3)),{x,-3,3},{y,-3,3},VectorRange->All,ClippingStyle->Black]

VectorPlot[(({x,y})/((Norm[{x,y}])^3)),{x,-3,3},{y,-3,3},VectorRange->{0,10},ClippingStyle->Black,PlotLegends->Automatic]

VectorSizes

Specify how long the shortest and longest arrows should be:

VectorPlot[{y-x(((1-(x^2)-(y^2)))^2),-x-y(((1-(x^2)-(y^2)))^2)},{x,-3,3},{y,-3,3},VectorMarkers->"CircleArrow",VectorSizes->1]

VectorPlot[{y-x(((1-(x^2)-(y^2)))^2),-x-y(((1-(x^2)-(y^2)))^2)},{x,-3,3},{y,-3,3},VectorScaling->Automatic,VectorSizes->{0.6,1}]

VectorPlot[{y-x(((1-(x^2)-(y^2)))^2),-x-y(((1-(x^2)-(y^2)))^2)},{x,-3,3},{y,-3,3},VectorScaling->Automatic,VectorSizes->{1,2}]

VectorAspectRatio

Change the shape of the arrows used to represent vectors:

VectorPlot[{y-x(((1-(x^2)-(y^2)))^2),-x-y(((1-(x^2)-(y^2)))^2)},{x,-3,3},{y,-3,3},VectorMarkers->"Drop"]

VectorPlot[{y-x(((1-(x^2)-(y^2)))^2),-x-y(((1-(x^2)-(y^2)))^2)},{x,-3,3},{y,-3,3},VectorMarkers->"Box"]

VectorPlot[{y-x(((1-(x^2)-(y^2)))^2),-x-y(((1-(x^2)-(y^2)))^2)},{x,-3,3},{y,-3,3},VectorMarkers->#,VectorAspectRatio->2/3]&/@{"Box","Drop"}

VectorPoints

Traditionally vectors have been drawn on a grid or user-supplied points:

Row[Table[VectorPlot[{y,-x},{x,-3,3},{y,-3,3},VectorPoints->pts],{pts,{10,RandomReal[{-3,3},{100,2}]}}]]

Use alternate methods of automatically selecting points:

Row[Table[VectorPlot[{y,-x},{x,-3,3},{y,-3,3},VectorPoints->pts],{pts,{"Hexagonal","Mesh"}}]]

VectorPlot[{y,-x},{x,y}∈Disk[]]

Row[Table[VectorPlot[{y,-x},{x,y}∈Disk[{0,0},3],VectorPoints->pts,RegionBoundaryStyle->None,RegionFillingStyle->Opacity[0]],{pts,{"Hexagonal","Mesh"}}]]

Region Styling

Highlight the domain of the vector plot:

VectorPlot[{y,-x},{x,y}∈Disk[{0,0},3]]

VectorPlot[{y,-x},{x,y}∈Disk[{0,0},3],RegionBoundaryStyle->Black,RegionFillingStyle->Gray]