71
UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC Matplotlib A tutorial Devert Alexandre School of Software Engineering of USTC 30 November 2012 — Slide 1/44

A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

MatplotlibA tutorial

Devert AlexandreSchool of Software Engineering of USTC

30 November 2012 — Slide 1/44

Page 2: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Table of Contents

1 First steps

2 Curve plots

3 Scatter plots

4 Boxplots

5 Histograms

6 Usage example

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 2/44

Page 3: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Curve plot

Let’s plot a curve

impor t mathimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a s i n u s o i dnbSamples = 256xRange = (−math . p i , math . p i )

x , y = [ ] , [ ]f o r n i n x range ( nbSamples ) :

k = (n + 0 . 5 ) / nbSamplesx . append ( xRange [ 0 ] + ( xRange [ 1 ] − xRange [ 0 ] ) ∗ k )y . append (math . s i n ( x [−1]))

# P lo t the s i n u s o i dp l t . p l o t ( x , y )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 3/44

Page 4: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Curve plot

This will show you something like this

4 3 2 1 0 1 2 3 41.0

0.5

0.0

0.5

1.0

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 4/44

Page 5: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

numpy

matplotlib can work with numpy arrays

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a s i n u s o i dnbSamples = 256xRange = (−math . p i , math . p i )

x , y = numpy . z e r o s ( nbSamples ) , numpy . z e r o s ( nbSamples )f o r n i n x range ( nbSamples ) :

k = (n + 0 . 5 ) / nbSamplesx [ n ] = xRange [ 0 ] + ( xRange [ 1 ] − xRange [ 0 ] ) ∗ ky [ n ] = math . s i n ( x [ n ] )

# P lo t the s i n u s o i dp l t . p l o t ( x , y )p l t . show ( )

numpy provides a lot of function and is efficient

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 5/44

Page 6: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

numpy

• zeros build arrays filled of 0

• linspace build arrays filled with an arithmeticsequence

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a s i n u s o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=256)y = numpy . z e r o s ( nbSamples )f o r n i n x range ( nbSamples ) :

y [ n ] = math . s i n ( x [ n ] )

# P lo t the s i n u s o i dp l t . p l o t ( x , y )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 6/44

Page 7: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

numpy

numpy functions can work on entire arrays

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a s i n u s o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=256)y = numpy . s i n ( x )

# P lo t the s i n u s o i dp l t . p l o t ( x , y )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 7/44

Page 8: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

PDF output

Exporting to a PDF file is just one change

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a s i n u s o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=256)y = numpy . s i n ( x )

# P lo t the s i n u s o i dp l t . p l o t ( x , y )p l t . s a v e f i g ( ’ s i n−p l o t . pdf ’ , t r a n s p a r e n t=True )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 8/44

Page 9: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Table of Contents

1 First steps

2 Curve plots

3 Scatter plots

4 Boxplots

5 Histograms

6 Usage example

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 9/44

Page 10: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Multiple curves

It’s often convenient to show several curves in one figure

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a s i n u s o i d and a c o s i n o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=256)y = numpy . s i n ( x )z = numpy . cos ( x )

# P lo t the cu r v e sp l t . p l o t ( x , y )p l t . p l o t ( x , z )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 10/44

Page 11: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Multiple curves

It’s often convenient to show several curves in one figure

4 3 2 1 0 1 2 3 41.0

0.5

0.0

0.5

1.0

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 10/44

Page 12: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Custom colors

Changing colors can help to make nice documents

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a s i n u s o i d and a c o s i n o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=256)y = numpy . s i n ( x )z = numpy . cos ( x )

# P lo t the cu r v e sp l t . p l o t ( x , y , c=’#FF4500 ’ )p l t . p l o t ( x , z , c=’#4682B4 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 11/44

Page 13: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Custom colors

Changing colors can help to make nice documents

4 3 2 1 0 1 2 3 41.0

0.5

0.0

0.5

1.0

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 11/44

Page 14: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Line thickness

Line thickness can be changed as well

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a s i n u s o i d and a c o s i n o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=256)y = numpy . s i n ( x )z = numpy . cos ( x )

# P lo t the cu r v e sp l t . p l o t ( x , y , l i n ew i d t h =3, c=’#FF4500 ’ )p l t . p l o t ( x , z , c=’#4682B4 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 12/44

Page 15: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Line thickness

Line thickness can be changed as well

4 3 2 1 0 1 2 3 41.0

0.5

0.0

0.5

1.0

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 12/44

Page 16: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Line patterns

For printed document, colors can be replaced by linepatterns

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# L i n e s t y l e s can be ’− ’ , ’−−’, ’− . ’ , ’ : ’

# Genera te a s i n u s o i d and a c o s i n o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=256)y = numpy . s i n ( x )z = numpy . cos ( x )

# P lo t the cu r v e sp l t . p l o t ( x , y , l i n e s t y l e=’−− ’ , c=’#000000 ’ )p l t . p l o t ( x , z , c=’#808080 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 13/44

Page 17: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Line patternsFor printed document, colors can be replaced by linepatterns

4 3 2 1 0 1 2 3 41.0

0.5

0.0

0.5

1.0

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 13/44

Page 18: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Markers

It sometime relevant to show the data points

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Markers can be ’ . ’ , ’ , ’ , ’ o ’ , ’ 1 ’ and more

# Genera te a s i n u s o i d and a c o s i n o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=64)y = numpy . s i n ( x )z = numpy . cos ( x )

# P lo t the cu r v e sp l t . p l o t ( x , y , marker=’ 1 ’ , ma r k e r s i z e =15, c=’#000000 ’ )p l t . p l o t ( x , z , c=’#000000 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 14/44

Page 19: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Markers

It sometime relevant to show the data points

4 3 2 1 0 1 2 3 41.0

0.5

0.0

0.5

1.0

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 14/44

Page 20: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Legend

A legend can help to make self–explanatory figures

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# l egend l o c a t i o n can be ’ b e s t ’ , ’ c e n t e r ’ , ’ l e f t ’ , ’ r i g h t ’ , e t c .

# Genera te a s i n u s o i d and a c o s i n o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=256)y = numpy . s i n ( x )z = numpy . cos ( x )

# P lo t the cu r v e sp l t . p l o t ( x , y , c=’#FF4500 ’ , l a b e l= ’ s i n ( x ) ’ )p l t . p l o t ( x , z , c=’#4682B4 ’ , l a b e l=’ cos ( x ) ’ )p l t . l e g end ( l o c=’ b e s t ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 15/44

Page 21: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Legend

A legend can help to make self–explanatory figures

4 3 2 1 0 1 2 3 41.0

0.5

0.0

0.5

1.0

sin(x)cos(x)

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 15/44

Page 22: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Custom axis scaleChanging the axis scale can improve readability

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# l egend l o c a t i o n can be ’ b e s t ’ , ’ c e n t e r ’ , ’ l e f t ’ , ’ r i g h t ’ , e t c .

# Genera te a s i n u s o i d and a c o s i n o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=256)y = numpy . s i n ( x )z = numpy . cos ( x )

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111)

a x i s . s e t y l i m (−0.5 ∗ math . p i , 0 . 5 ∗ math . p i )

# P lo t the cu r v e sp l t . p l o t ( x , y , c=’#FF4500 ’ , l a b e l= ’ s i n ( x ) ’ )p l t . p l o t ( x , z , c=’#4682B4 ’ , l a b e l=’ cos ( x ) ’ )p l t . l e g end ( l o c=’ b e s t ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 16/44

Page 23: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Custom axis scale

Changing the axis scale can improve readability

4 3 2 1 0 1 2 3 41.5

1.0

0.5

0.0

0.5

1.0

1.5sin(x)cos(x)

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 16/44

Page 24: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

GridSame goes for a grid, can be helpful

impor t mathimpor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# l egend l o c a t i o n can be ’ b e s t ’ , ’ c e n t e r ’ , ’ l e f t ’ , ’ r i g h t ’ , e t c .

# Genera te a s i n u s o i d and a c o s i n o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=256)y = numpy . s i n ( x )z = numpy . cos ( x )

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111)

a x i s . s e t y l i m (−0.5 ∗ math . p i , 0 . 5 ∗ math . p i )a x i s . g r i d ( True )

# P lo t the cu r v e sp l t . p l o t ( x , y , c=’#FF4500 ’ , l a b e l= ’ s i n ( x ) ’ )p l t . p l o t ( x , z , c=’#4682B4 ’ , l a b e l=’ cos ( x ) ’ )p l t . l e g end ( l o c=’ b e s t ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 17/44

Page 25: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Grid

Same goes for a grid, can be helpful

4 3 2 1 0 1 2 3 41.5

1.0

0.5

0.0

0.5

1.0

1.5sin(x)cos(x)

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 17/44

Page 26: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Error bars

Your data might come with a known measure error

impor t mathimpor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a n o i s y s i n u s o i dx = numpy . l i n s p a c e (−math . p i , math . p i , num=48)y = numpy . s i n ( x + 0.05 ∗ numpy . random . s t anda rd no rma l ( l e n ( x ) ) )y e r r o r = 0 .1 ∗ numpy . random . s t anda rd no rma l ( l e n ( x ) )

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111)

a x i s . s e t y l i m (−0.5 ∗ math . p i , 0 . 5 ∗ math . p i )

# P lo t the cu r v e sp l t . p l o t ( x , y , c=’#FF4500 ’ )p l t . e r r o r b a r ( x , y , y e r r=y e r r o r )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 18/44

Page 27: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Error bars

Your data might come with a known measure error

4 3 2 1 0 1 2 3 41.5

1.0

0.5

0.0

0.5

1.0

1.5

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 18/44

Page 28: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Table of Contents

1 First steps

2 Curve plots

3 Scatter plots

4 Boxplots

5 Histograms

6 Usage example

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 19/44

Page 29: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Scatter plot

A scatter plot just shows one point for each dataset entry

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a 2d normal d i s t r i b u t i o nnbPo in t s = 100x = numpy . random . s t anda rd no rma l ( nbPo in t s )y = numpy . random . s t anda rd no rma l ( nbPo in t s )

# P lo t the p o i n t sp l t . s c a t t e r ( x , y )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 20/44

Page 30: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Scatter plotA scatter plot just shows one point for each dataset entry

3 2 1 0 1 2 34

3

2

1

0

1

2

3

4

5

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 20/44

Page 31: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Aspect ratio

If can be very important to have the same scale on bothaxis

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a 2d normal d i s t r i b u t i o nnbPo in t s = 100x = numpy . random . s t anda rd no rma l ( nbPo in t s )y = 0 .1 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s )

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111 , a sp e c t=’ equa l ’ )

# P lo t the p o i n t sp l t . s c a t t e r ( x , y , c=’#FF4500 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 21/44

Page 32: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Aspect ratioIf can be very important to have the same scale on bothaxis

3 2 1 0 1 2 30.30.20.10.00.10.20.3

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 21/44

Page 33: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Aspect ratioAlternative way to keep the same scale on both axis

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te a 2d normal d i s t r i b u t i o nnbPo in t s = 100x = numpy . random . s t anda rd no rma l ( nbPo in t s )y = 0 .1 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s )

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111)

cmin , cmax = min (min ( x ) , min ( y ) ) , max(max( x ) , max( y ) )cmin −= 0.05 ∗ ( cmax − cmin )cmax += 0.05 ∗ ( cmax − cmin )

a x i s . s e t x l i m ( cmin , cmax )a x i s . s e t y l i m ( cmin , cmax )

# P lo t the p o i n t sp l t . s c a t t e r ( x , y , c=’#FF4500 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 22/44

Page 34: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Aspect ratio

Alternative way to keep the same scale on both axis

2 1 0 1 2

2

1

0

1

2

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 22/44

Page 35: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Multiple scatter plotsAs for curve, you can show 2 datasets on one figure

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

c o l o r s = ( ’#FF4500 ’ , ’#3CB371 ’ , ’#4682B4 ’ , ’#DB7093 ’ , ’#FFD700 ’ )

# Genera te a 2d normal d i s t r i b u t i o nnbPo in t s = 100

x , y = [ ] , [ ]

x += [ numpy . random . s t anda rd no rma l ( nbPo in t s ) ]y += [ 0 . 2 5 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s ) ]

x += [ 0 . 5 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s ) + 3 . 0 ]y += [2 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s ) + 2 . 0 ]

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111 , a sp e c t=’ equa l ’ )

# P lo t the p o i n t sf o r i i n x range ( l e n ( x ) ) :

p l t . s c a t t e r ( x [ i ] , y [ i ] , c=c o l o r s [ i % l e n ( c o l o r s ) ] )

p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 23/44

Page 36: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Multiple scatter plots

As for curve, you can show 2 datasets on one figure

3 2 1 0 1 2 3 4 54

2

0

2

4

6

8

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 23/44

Page 37: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Showing centersIt can help to see the centers or the median points

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

c o l o r s = ( ’#FF4500 ’ , ’#3CB371 ’ , ’#4682B4 ’ , ’#DB7093 ’ , ’#FFD700 ’ )

# Genera te a 2d normal d i s t r i b u t i o nnbPo in t s = 100

x , y = [ ] , [ ]

x += [ numpy . random . s t anda rd no rma l ( nbPo in t s ) ]y += [ 0 . 2 5 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s ) ]

x += [ 0 . 5 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s ) + 3 . 0 ]y += [2 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s ) + 2 . 0 ]

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111 , a sp e c t=’ equa l ’ )

# P lo t the p o i n t sf o r i i n x range ( l e n ( x ) ) :

c o l = c o l o r s [ i % l e n ( c o l o r s ) ]p l t . s c a t t e r ( x [ i ] , y [ i ] , c=c o l )p l t . s c a t t e r ( [ numpy . median ( x [ i ] ) ] , [ numpy . median ( y [ i ] ) ] , c=co l , s=250)

p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 24/44

Page 38: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Showing centers

It can help to see the centers or the median points

3 2 1 0 1 2 3 4 54

2

0

2

4

6

8

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 24/44

Page 39: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Marker stylesYou can use different markers styles

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

markers = ( ’+’ , ’ ˆ ’ , ’ . ’ )

# Genera te a 2d normal d i s t r i b u t i o nnbPo in t s = 100

x , y = [ ] , [ ]

x += [ numpy . random . s t anda rd no rma l ( nbPo in t s ) ]y += [ 0 . 2 5 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s ) ]

x += [ 0 . 5 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s ) + 3 . 0 ]y += [2 ∗ numpy . random . s t anda rd no rma l ( nbPo in t s ) + 2 . 0 ]

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111 , a sp e c t=’ equa l ’ )

# P lo t the p o i n t sf o r i i n x range ( l e n ( x ) ) :m = markers [ i % l e n ( markers ) ]p l t . s c a t t e r ( x [ i ] , y [ i ] , marker=m, c=’#000000 ’ )p l t . s c a t t e r ( [ numpy . median ( x [ i ] ) ] , [ numpy . median ( y [ i ] ) ] , marker=m, s=250 , c=’#000000 ’ )

p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 25/44

Page 40: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Marker styles

You can use different markers styles

4 3 2 1 0 1 2 3 4 54

2

0

2

4

6

8

10

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 25/44

Page 41: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Table of Contents

1 First steps

2 Curve plots

3 Scatter plots

4 Boxplots

5 Histograms

6 Usage example

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 26/44

Page 42: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Boxplots

Let’s do a simple boxplot

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te normal d i s t r i b u t i o n datax = numpy . random . s t anda rd no rma l (256)

# Show a boxp l o t o f the datap l t . b o xp l o t ( x )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 27/44

Page 43: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Boxplots

Let’s do a simple boxplot

13

2

1

0

1

2

3

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 27/44

Page 44: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Boxplots

You might want to show the original data in the sametime

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te normal d i s t r i b u t i o n datax = numpy . random . s t anda rd no rma l (256)

# Show a boxp l o t o f the datap l t . s c a t t e r ( [ 0 ] ∗ l e n ( x ) , x , c=’#4682B4 ’ )p l t . b o xp l o t ( x , p o s i t i o n s =[0 ] )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 28/44

Page 45: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

BoxplotsYou might want to show the original data in the sametime

04

3

2

1

0

1

2

3

4

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 28/44

Page 46: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Multiple boxplots

Boxplots are often used to show side by side variousdistributions

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te normal d i s t r i b u t i o n datadata = [ ]f o r i i n x range ( 5 ) :

mu = 10 ∗ numpy . random . random sample ( )s igma = 2 ∗ numpy . random . random sample ( ) + 0 .1data . append (numpy . random . normal (mu, sigma , 256))

# Show a boxp l o t o f the datap l t . b o xp l o t ( data )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 29/44

Page 47: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Multiple boxplotsBoxplots are often used to show side by side variousdistributions

1 2 3 4 52

4

6

8

10

12

14

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 29/44

Page 48: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Orientation

Changing the orientation is easily done

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te normal d i s t r i b u t i o n datadata = [ ]f o r i i n x range ( 5 ) :

mu = 10 ∗ numpy . random . random sample ( )s igma = 2 ∗ numpy . random . random sample ( ) + 0 .1data . append (numpy . random . normal (mu, sigma , 256))

# Show a boxp l o t o f the datap l t . b o xp l o t ( data , v e r t =0)p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 30/44

Page 49: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Orientation

Changing the orientation is easily done

6 4 2 0 2 4 6 8 10 12

1

2

3

4

5

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 30/44

Page 50: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

LegendGood graphics have a proper legend

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Genera te normal d i s t r i b u t i o n datal a b e l s = [ ’ mercury ’ , ’ l e a d ’ , ’ l i t h i um ’ , ’ t ung s t ene ’ , ’ cadnium ’ ]data = [ ]f o r i i n x range ( l e n ( l a b e l s ) ) :

mu = 10 ∗ numpy . random . random sample ( ) + 100sigma = 2 ∗ numpy . random . random sample ( ) + 0 .1data . append (numpy . random . normal (mu, sigma , 256))

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111)

a x i s . s e t t i t l e ( ’ A l i e n nodu l e s compos i t i on ’ )xt ickNames = p l t . s e t p ( a x i s , x t i c k l a b e l s = l a b e l s )a x i s . s e t y l a b e l ( ’ c o n c e n t r a t i o n (ppm) ’ )

# Show a boxp l o t o f the datap l t . b o xp l o t ( data )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 31/44

Page 51: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Legend

Good graphics have a proper legend

mercury lead lithium tungstene cadnium100

102

104

106

108

110

112co

nce

ntr

ati

on (

ppm

)Alien nodules composition

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 31/44

Page 52: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Table of Contents

1 First steps

2 Curve plots

3 Scatter plots

4 Boxplots

5 Histograms

6 Usage example

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 32/44

Page 53: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Histograms

Histogram are convenient to sum-up results

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Some datadata = numpy . abs (numpy . random . s t anda rd no rma l ( 30 ) )

# Show an h i s tog ramp l t . barh ( range ( l e n ( data ) ) , data , c o l o r=’#4682B4 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 33/44

Page 54: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Histograms

Histogram are convenient to sum-up results

0.0 0.5 1.0 1.5 2.0 2.50

5

10

15

20

25

30

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 33/44

Page 55: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Histograms

A variant to show 2 quantities per item on 1 figure

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Some datadata = [ [ ] , [ ] ]f o r i i n x range ( l e n ( data ) ) :

data [ i ] = numpy . abs (numpy . random . s t anda rd no rma l ( 30 ) )

# Show an h i s tog raml a b e l s = range ( l e n ( data [ 0 ] ) )

p l t . barh ( l a b e l s , data [ 0 ] , c o l o r=’#4682B4 ’ )p l t . barh ( l a b e l s , −1 ∗ data [ 1 ] , c o l o r=’#FF4500 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 34/44

Page 56: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Histograms

A variant to show 2 quantities per item on 1 figure

3 2 1 0 1 2 30

5

10

15

20

25

30

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 34/44

Page 57: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

LabelsVery often, we need to name items on an histogram

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Some datanames = [ ’Wang Bu ’ , ’ Cheng Cao ’ , ’ Zhang Xue L i ’ , ’ Tang Wei ’ , ’ Sun Wu Kong ’ ]marks = 7 ∗ numpy . random . random sample ( l e n ( names ) ) + 3

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111)

a x i s . s e t x l i m (0 , 10)

p l t . y t i c k s ( numpy . a range ( l e n ( marks ) )+0.5 , names )

a x i s . s e t t i t l e ( ’ Data−mining marks ’ )a x i s . s e t x l a b e l ( ’mark ’ )

# Show an h i s tog ramp l t . barh ( range ( l e n ( marks ) ) , marks , c o l o r=’#4682B4 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 35/44

Page 58: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Labels

Very often, we need to name items on an histogram

0 2 4 6 8 10mark

Wang Bu

Cheng Cao

Zhang Xue Li

Tang Wei

Sun Wu Kong

Data-mining marks

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 35/44

Page 59: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Error barsError bars, to indicate the accuracy of values

impor t numpyimpor t numpy . randomimpor t ma t p l o t l i b . p yp l o t as p l t

# Some datanames = [ ’ 6809 ’ , ’ 6502 ’ , ’ 8086 ’ , ’ Z80 ’ , ’RCA1802 ’ ]speed = 70 ∗ numpy . random . random sample ( l e n ( names ) ) + 30e r r o r = 9 ∗ numpy . random . random sample ( l e n ( names ) ) + 1

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111)

p l t . y t i c k s ( numpy . a range ( l e n ( names ))+0.5 , names )

a x i s . s e t t i t l e ( ’ 8 b i t s CPU benchmark − s t r i n g t e s t ’ )a x i s . s e t x l a b e l ( ’ s c o r e ’ )

# Show an h i s tog ramp l t . barh ( range ( l e n ( names ) ) , speed , x e r r=e r r o r , c o l o r=’#4682B4 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 36/44

Page 60: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Error bars

Error bars, to indicate the accuracy of values

0 20 40 60 80 100score

6809

6502

8086

Z80

RCA1802

8 bits CPU benchmark - string test

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 36/44

Page 61: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Table of Contents

1 First steps

2 Curve plots

3 Scatter plots

4 Boxplots

5 Histograms

6 Usage example

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 37/44

Page 62: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Old Faithful

Let’s display some real data: Old Faithful geyser

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 38/44

Page 63: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Old Faithful

This way works, but good example of half-done job

impor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Read the datadata = numpy . l o a d t x t ( ’ . / d a t a s e t s / g e y s e r . dat ’ )

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111 , a sp e c t=’ equa l ’ )

# P lo t the p o i n t sp l t . s c a t t e r ( data [ : , 0 ] , data [ : , 1 ] , c=’#FF4500 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 39/44

Page 64: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Old Faithful

This way works, but good example of half-done job

30 40 50 60 70 80 90 1001.52.02.53.03.54.04.55.05.5

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 39/44

Page 65: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Old Faithful

Let’s make a more readable figure

impor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Read the datadata = numpy . l o a d t x t ( ’ . / d a t a s e t s / g e y s e r . dat ’ )

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111)

a x i s . s e t t i t l e ( ’ Old F a i t h f u l g e y s e r d a t a s e t ’ )a x i s . s e t x l a b e l ( ’ w a i t i n g t ime (mn . ) ’ )a x i s . s e t y l a b e l ( ’ e r u p t i o n du r a t i o n (mn . ) ’ )

# P lo t the p o i n t sp l t . s c a t t e r ( data [ : , 0 ] , data [ : , 1 ] , c=’#FF4500 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 40/44

Page 66: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Old Faithful

Let’s make a more readable figure

30 40 50 60 70 80 90 100waiting time (mn.)

1.5

2.0

2.5

3.0

3.5

4.0

4.5

5.0

5.5eru

pti

on d

ura

tion (

mn.)

Old Faithful geyser dataset

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 40/44

Page 67: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Mercury & fishes

Let’s display more complex data: fishes and mercurypoisoning

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 41/44

Page 68: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Mercury & fishes

A first try

impor t numpyimpor t ma t p l o t l i b . p yp l o t as p l t

# Read the datadata = numpy . l o a d t x t ( ’ . / d a t a s e t s / f i s h . dat ’ )

# Ax i s s e tupf i g = p l t . f i g u r e ( )a x i s = f i g . a dd subp l o t (111)

a x i s . s e t t i t l e ( ’ North Ca r o l i n a f i s h e s mercury c o n c e n t r a t i o n ’ )a x i s . s e t x l a b e l ( ’ we ight ( g . ) ’ )a x i s . s e t y l a b e l ( ’ mercury c o n c e n t r a t i o n (ppm) ’ )

# P lo t the p o i n t sp l t . s c a t t e r ( data [ : , 3 ] , data [ : , 4 ] , c=’#FF4500 ’ )p l t . show ( )

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 42/44

Page 69: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Mercury & fishes

A first try

1000 0 1000 2000 3000 4000 5000weight (g.)

0.5

0.0

0.5

1.0

1.5

2.0

2.5

3.0

3.5

4.0m

erc

ury

conce

ntr

ati

on (

ppm

)North Carolina fishes mercury concentration

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 42/44

Page 70: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Mercury & fishes

Show more information with subplots

20 30 40 50 60 70length (cm.)

10000

10002000300040005000

weig

ht

(g.)

1000 0 1000 2000 3000 4000 5000weight (g.)

0.50.00.51.01.52.02.53.03.54.0

merc

ury

conce

ntr

ati

on (

ppm

)

20 30 40 50 60 70length (cm.)

0.50.00.51.01.52.02.53.03.54.0

merc

ury

conce

ntr

ati

on (

ppm

)North Carolina fishes mercury concentration

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 43/44

Page 71: A tutorial Devert Alexandre - Marmakoidemarmakoide.org/download/teaching/dm/dm-matplotlib.pdf · 2012-11-30 · Custom axis scale Changing the axis scale can improve readability importmath

UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA SCHOOL OF SOFTWARE ENGINEERING OF USTC

Mercury & fishes

Data from one river with its own color

20 30 40 50 60 70length (cm.)

10000

10002000300040005000

weig

ht

(g.)

1000 0 1000 2000 3000 4000 5000weight (g.)

0.50.00.51.01.52.02.53.03.54.0

merc

ury

conce

ntr

ati

on (

ppm

)

20 30 40 50 60 70length (cm.)

0.50.00.51.01.52.02.53.03.54.0

merc

ury

conce

ntr

ati

on (

ppm

)North Carolina fishes mercury concentration

Devert Alexandre (School of Software Engineering of USTC) — Matplotlib — Slide 44/44