文章目录
MatplotlibMatplotlib基本Pandas中的基本图形Matplotlib作图误差条形图饼图等高线图3D柱形图3D直方图
Matplotlib
Matplotlib基本
from __future__
import division
import numpy
as np
import pandas
as pd
from pandas
import DataFrame
,Series
import os
import matplotlib
.pyplot
as plt
plt
.plot
([1, 2, 3, 2, 3, 2, 2, 1])
plt
.show
()
plt
.plot
([4,3,2,1],[1,2,3,4])
plt
.show
()
x
= [1,2,3,4]
y
= [5,4,3,2]
plt
.figure
()
plt
.subplot
(231)
plt
.plot
(x
,y
)
plt
.subplot
(232)
plt
.bar
(x
,y
)
plt
.subplot
(233)
plt
.bar
(x
,y
)
plt
.subplot
(234)
plt
.bar
(x
,y
)
y1
=[7,8,5,3]
plt
.bar
(x
,y1
,bottom
=y
,color
='r')
plt
.subplot
(235)
plt
.boxplot
(x
)
plt
.subplot
(236)
plt
.scatter
(x
,y
)
plt
.show
()
plt
.show
()
figure对象
fig
= plt
.figure
()
ax1
= fig
.add_subplot
(2,2,1)
ax2
= fig
.add_subplot
(2,2,2)
ax3
= fig
.add_subplot
(2,2,3)
plt
.plot
(np
.random
.randn
(50).cumsum
(),'k--')
ax1
.hist
(np
.random
.randn
(100),bins
=20,color
='r',alpha
=1)
ax2
.scatter
(np
.arange
(30),np
.arange
(30)+np
.random
.randn
(30)*3)
plt
.show
()
plt
.close
()
fig
,axes
= plt
.subplots
(2,3)
axes
[0][0].scatter
(np
.arange
(30),np
.arange
(30)+np
.random
.randn
(30)*3)
plt
.show
()
plt
.subplots_adjust
(None,None,None,None,None,None)
fig
,axes
= plt
.subplots
(2,2,sharex
=True,sharey
=True)
for i
in range(2):
for j
in range(2):
axes
[i
][j
].hist
(np
.random
.randn
(500),bins
=50,color
='r',alpha
=1)
plt
.subplots_adjust
(wspace
=0,hspace
=0)
plt
.show
()
plt
.figure
()
x
= [1, 2, 3, 4]
y
= [5, 4, 3, 2]
plt
.plot
(x
,y
,'r--')
plt
.plot
(x
,y
,linestyle
="--",color
='r')
data
= np
.random
.randn
(30).cumsum
()
plt
.plot
(data
, 'ko--')
plt
.plot
(data
, 'k--', label
='Default')
plt
.plot
(data
, 'k-', drawstyle
='steps-post', label
='step-post')
plt
.legend
(loc
='best')
plt
.show
()
plt
.close
("all")
fig
= plt
.figure
()
ax
= fig
.add_subplot
(111)
ax
.plot
(np
.random
.randn
(1000).cumsum
())
ax
.set_xticks
([0, 250, 500, 750, 1000])
ax
.set_xticklabels
(['one', 'two', 'three', 'four', 'five'],
rotation
=30, fontsize
='small')
ax
.set_title
("My First Matplotlib Plot")
ax
.set_ylabel
("y")
ax
.set_xlabel
("x")
plt
.show
()
fig
= plt
.figure
()
ax
= fig
.add_subplot
(111)
ax
.plot
(np
.random
.randn
(1000).cumsum
(),'k', label
='one')
ax
.plot
(np
.random
.randn
(1000).cumsum
(),'k--', label
='two')
ax
.plot
(np
.random
.randn
(1000).cumsum
(),'k.', label
='three')
plt
.legend
(loc
='best')
plt
.show
()
from datetime
import datetime
fig
= plt
.figure
()
ax
= fig
.add_subplot
(111)
data
= pd
.read_csv
("week7/spx.csv",index_col
=0,parse_dates
=True)
spx
= data
['SPX']
spx
.plot
(ax
=ax
,style
= 'k--')
crisis_data
= [
(datetime
(2007,10,11),'Peak of bull market'),
(datetime
(2008,3,12),'Bear Stearns Fails'),
(datetime
(2008,9,15),'Lehman Bankruptcy')
]
for date
,label
in crisis_data
:
ax
.annotate
(label
,xy
=(date
,spx
.asof
(date
)+50),
xytext
=(date
,spx
.asof
(date
)+200),
arrowprops
=dict(facecolor
='black'),
horizontalalignment
='left',
verticalalignment
='top'
)
ax
.set_xlim
('1/1/2007','1/1/2011')
ax
.set_title
("Imprtana dates in 2008-2009 financial crisis")
plt
.show
()
Pandas中的基本图形
s
= Series
(np
.random
.randn
(10),index
=np
.arange
(0,100,10))
s
.plot
()
plt
.show
()
df
= DataFrame
(np
.random
.randn
(10,4).cumsum
(0),
columns
=['A','B','C','D'],
index
=np
.arange
(0,100,10))
df
.plot
()
plt
.show
()
fig
,axes
= plt
.subplots
(2,1)
data
= Series
(np
.random
.randn
(16),index
=list('abcdefghijklmnop'))
data
.plot
(kind
='bar',ax
=axes
[0],color
='k',alpha
=0.7)
data
.plot
(kind
='barh',ax
=axes
[1],color
='k',alpha
=0.7)
plt
.show
()
df
= DataFrame
(np
.random
.randn
(6,4),
index
=['one','tow','three','four','five','six'],
columns
=pd
.Index
(['A','B','C','D'],name
='Genus'))
tips
= pd
.read_csv
('week7/tips.csv')
party_counts
= pd
.crosstab
(tips
.day
,tips
['size'])
party_counts
= party_counts
.loc
[:,2:5]
print(party_counts
)
party_pcts
= party_counts
.div
(party_counts
.sum(1).astype
(float),axis
=0)
party_pcts
.plot
(kind
='bar',stacked
=True)
tips
= pd
.read_csv
('week7/tips.csv')
print(tips
)
tips
['tip_pct'] = tips
['tip'] / tips
['total_bill']
tips
['tip_pct'].hist
(bins
=50)
plt
.show
()
comp1
= np
.random
.normal
(0,1,size
=200)
comp2
= np
.random
.normal
(10,2,size
=200)
values
= Series
(np
.concatenate
([comp1
,comp2
]))
values
.hist
(bins
=100,alpha
=0.3,color
='k',density
=True)
values
.plot
(kind
='kde',style
='k--')
plt
.show
()
Matplotlib作图
误差条形图
x
= np
.arange
(0,10,1)
y
= np
.log
(x
)
xe
= 0.1 * np
.abs(np
.random
.randn
(len(y
)))
plt
.bar
(x
,y
,yerr
=xe
,width
=0.4,align
='center',color
='cyan',ecolor
='r',label
="experiment #1")
plt
.xlabel
('# measurement')
plt
.ylabel
("Measured values")
plt
.title
("Measurements")
plt
.legend
(loc
='upper left')
plt
.show
()
饼图
plt
.figure
(1,figsize
=(8,8))
labels
= 'Spring','Summer','Autumn','Winter'
values
= [15,16,16,28]
explode
=[0.1,0.1,0.1,0.1]
plt
.pie
(values
,
explode
=explode
,
labels
=labels
,
autopct
='%1.1f%%',
startangle
=0)
plt
.title
("Rainy days by season")
plt
.show
()
等高线图
import matplotlib
as mpl
def process_signals(x
,y
):
return (1 - (x
**2 + y
**2)) * np
.exp
(-y
** 3 / 3)
x
= np
.arange
(-1.5,1.5,0.1)
y
= np
.arange
(-1.5,1.5,0.1)
X
, Y
= np
.meshgrid
(x
, y
)
process_signals
(X
,Y
)
Z
= process_signals
(X
,Y
)
N
= np
.arange
(-1,1.5,0.3)
CS
= plt
.contour
(Z
, N
, linewidths
= 2,cmap
= mpl
.cm
.jet
)
plt
.clabel
(CS
,inline
=True,fmt
="%1.1f",fontsize
=10)
plt
.colorbar
(CS
)
plt
.show
()
3D柱形图
import matplotlib
as mpl
import matplotlib
.dates
as mdates
from mpl_toolkits
.mplot3d
import Axes3D
mpl
.rcParams
['font.size'] = 10
fig
= plt
.figure
()
ax
= fig
.add_subplot
(111,projection
='3d')
for z
in [2011,2012,2013,2014]:
xs
= range(1,13)
ys
= 1000 * np
.random
.rand
(12)
color
= plt
.cm
.Set2
(np
.random
.choice
(range(plt
.cm
.Set2
.N
)))
ax
.bar
(xs
, ys
, zs
=z
, zdir
='y', color
=color
, alpha
=0.8)
ax
.xaxis
.set_major_locator
(mpl
.ticker
.FixedLocator
(xs
))
ax
.yaxis
.set_major_locator
(mpl
.ticker
.FixedLocator
(ys
))
ax
.set_xlabel
('Month')
ax
.set_ylabel
('Year')
ax
.set_zlabel
('Sales Net [usd]')
plt
.show
()
3D直方图
mpl
.rcParams
['font.size'] = 10
samples
= 25
x
= np
.random
.normal
(5, 1, samples
)
y
= np
.random
.normal
(3, .5, samples
)
fig
= plt
.figure
()
ax
= fig
.add_subplot
(211, projection
='3d')
hist
, xedges
, yedges
= np
.histogram2d
(x
, y
, bins
=10)
elements
= (len(xedges
) - 1) * (len(yedges
) - 1)
xpos
, ypos
= np
.meshgrid
(xedges
[:-1]+.25, yedges
[:-1]+.25)
xpos
= xpos
.flatten
()
ypos
= ypos
.flatten
()
zpos
= np
.zeros
(elements
)
dx
= .1 * np
.ones_like
(zpos
)
dy
= dx
.copy
()
dz
= hist
.flatten
()
ax
.bar3d
(xpos
, ypos
, zpos
, dx
, dy
, dz
, color
='b', alpha
=0.4)
ax
.set_xlabel
('X Axis')
ax
.set_ylabel
('Y Axis')
ax
.set_zlabel
('Z Axis')
ax2
= fig
.add_subplot
(212)
ax2
.scatter
(x
, y
)
ax2
.set_xlabel
('X Axis')
ax2
.set_ylabel
('Y Axis')
plt
.show
()
转载请注明原文地址: https://mac.8miu.com/read-509250.html