Slide 1

Slide 1 text

Let your data SPEAK! Introduction to data visualization Bartosz Telenczuk Kiel, 2012 Monday, 3 September 2012

Slide 2

Slide 2 text

Monday, 3 September 2012

Slide 3

Slide 3 text

Monday, 3 September 2012

Slide 4

Slide 4 text

position length angle area saturation brightness volume shape hue Grouping containment connection similarity proximity Monday, 3 September 2012

Slide 5

Slide 5 text

Monday, 3 September 2012

Slide 6

Slide 6 text

Monday, 3 September 2012

Slide 7

Slide 7 text

Visualization design principles Monday, 3 September 2012

Slide 8

Slide 8 text

Monday, 3 September 2012

Slide 9

Slide 9 text

Monday, 3 September 2012

Slide 10

Slide 10 text

Monday, 3 September 2012

Slide 11

Slide 11 text

Monday, 3 September 2012

Slide 12

Slide 12 text

Monday, 3 September 2012

Slide 13

Slide 13 text

Monday, 3 September 2012

Slide 14

Slide 14 text

Tools Monday, 3 September 2012

Slide 15

Slide 15 text

GET DATA PARSE IT PROCESS VISUALIZE PUBLISH urllib2 csv, beautifulsoup numpy, scipy matplotlib, chaco, mayavi2 LaTeX, cherrypy Monday, 3 September 2012

Slide 16

Slide 16 text

John Hunter 1968-2012 Monday, 3 September 2012

Slide 17

Slide 17 text

Monday, 3 September 2012

Slide 18

Slide 18 text

plot scatter bar polar contour imshow Monday, 3 September 2012

Slide 19

Slide 19 text

import numpy as np import matplotlib.pyplot as plt t = np.linspace(0, 2*np.pi, 100) #generate data y = np.sin(t) plt.plot(t, y) plt.xlabel('angle') #add axis labels plt.ylabel('amplitude') plt.xlim([0, 2*np.pi]) #set data limits plt.xticks([0, np.pi, 2*np.pi], #add tick labels ['0', r'$\pi$', r'2$\pi$']) plt.show() #show plot Monday, 3 September 2012

Slide 20

Slide 20 text

Monday, 3 September 2012

Slide 21

Slide 21 text

import matplotlib.pyplot as plt import matplotlib.patches as mpatches fig = plt.figure(figsize=(5,5)) # create figure container ax = plt.axes([0,0,1,1], frameon=False) # create axes container art = mpatches.Circle((0.5, 0.5), 0.5, ec="none") # create an artist ax.add_patch(art) # add the artist to the # container ax.set_xticks([]) # remove axes ticks ax.set_yticks([]) plt.show() Monday, 3 September 2012

Slide 22

Slide 22 text

Monday, 3 September 2012

Slide 23

Slide 23 text

display transform data transform axes transform figure transform Monday, 3 September 2012

Slide 24

Slide 24 text

import numpy as np import matplotlib.pyplot as plt from matplotlib import patches from matplotlib import transforms fig = plt.figure() ax = fig.add_subplot(111) x = 10*np.random.randn(1000) ax.hist(x, 30) trans = transforms.blended_transform_factory( ax.transData, ax.transAxes) rect = patches.Rectangle((8,0), width=10, height=1, transform=trans, color='gray', alpha=0.5) ax.add_patch(rect) plt.show() Monday, 3 September 2012

Slide 25

Slide 25 text

Interactivity Monday, 3 September 2012

Slide 26

Slide 26 text

import numpy from matplotlib.pyplot import figure, show def onpick(event): # define a handler i = event.ind # indices of clicked points ax.plot(xs[i], ys[i], 'ro') # plot the points in red fig.canvas.draw() # update axes xs, ys = numpy.random.rand(2,100) fig = figure() ax = fig.add_subplot(111) line, = ax.plot(xs, ys, 'o', picker=5) # 5 points tolerance fig.canvas.mpl_connect('pick_event', onpick) # connect handler to event show() # enter the main loop Monday, 3 September 2012

Slide 27

Slide 27 text

Monday, 3 September 2012

Slide 28

Slide 28 text

points3d( ) contour3d( ) quiver3d( ) plot3d( ) Monday, 3 September 2012

Slide 29

Slide 29 text

from enthought.mayavi import mlab import numpy as np x, y = np.ogrid[-10:10:100j, -10:10:100j] r = np.sqrt(x**2 + y**2) z = np.sin(r)/r mlab.surf(x,y, 10*z) mlab.outline() mlab.colorbar() Monday, 3 September 2012

Slide 30

Slide 30 text

Monday, 3 September 2012