Matplotlib 是一个python 的绘图库,主要用于生成2D图表。
常用到的是matplotlib中的pyplot,导入方式import matplotlib.pyplot as plt
一、显示图表的模式
1.plt.show()
该方式每次都需要手动show()才能显示图表,由于pycharm不支持魔法函数,因此在pycharm中都需要采取这种show()的方式。
arr = np.random.rand(10) plt.plot(arr) plt.show() #每次都需要手动show()
2.魔法函数%matplotlib inline
魔法函数不需要手动show(),可直接生成图表,但是魔法函数无法在pycharm中使用,下面都是在jupyter notebook中演示。
inline方式直接在代码的下方生成一个图表。
%matplotlib inline x = np.random.rand(1000) y = np.random.rand(1000) plt.scatter(x,y) #最基本散点图 # <matplotlib.collections.PathCollection at 0x54b2048>
3.魔法函数%matplotlib notebook
%matplotlib notebook s = pd.Series(np.random.rand(100)) s.plot(style = 'k--o',figsize = (10,5))
notebook方式,代码需要运行两次,会在代码下方生成一个可交互的图表,可对图表进行放大、拖动、返回原样等操作。
4.魔法函数%matplotlib qt5
%matplotlib qt5 plt.gcf().clear() df = pd.DataFrame(np.random.rand(50,2),columns=['A','B']) df.hist(figsize=(12,5),color='g',alpha=0.8)
qt5方式会弹出一个独立于界面上的可交互图表。
由于可交互的图表比较占内存,运行起来稍显卡,因此常采用inline方式。
二、生成图表的方式
1.Seris生成
ts = pd.Series(np.random.randn(50),index=pd.date_range('2019/1/1/',periods=50)) ts = ts.cumsum() ts.plot()
2.DataFrame生成
df = pd.DataFrame(np.random.rand(20,3),columns=['A','B','C']) df.plot()
三、图表的基本元素
plot的使用方法,以下图表都在%matplotlib inline 模式下生成。
plot(kind='line',ax=None,figsize=None,use_index=True,title=None,grid=None,legend=None,\ style=None,logx=False,logy=False,loglog=False,xticks=None,yticks=None,xlim=None,\ ylim=None,rot=None,fontsize=None,colormpap=None,subplots=False,table=False,xerr=None,yerr=None,\ lable=None,secondary_y=False,**kwargs) # kind:图表类型,默认为line折线图,其他bar直方图、barh横向直方图 # ax:第几个子图 # figsize:图表大小,即长和宽,默认为None,指定形式为(m,n) # use_index:是否以原数据的索引作为x轴的刻度标签,默认为True,如果设置为False则x轴刻度标签为从0开始的整数 # title:图表标题,默认为None # grid:是否显示网格,默认为None,也可以直接使用plt.grid() # legend:如果图表包含多个序列,序列的注释的位置 # style:风格字符串,包含了linestyle、color、marker,默认为None,如果单独指定了color以color的颜色为准 # color:颜色,默认为None # xlim和ylim:x轴和y轴边界 # xticks和yticks:x轴和y轴刻度标签 # rot:x轴刻度标签的逆时针旋转角度,默认为None,例如rot = 45表示x轴刻度标签逆时针旋转45° # fontsize:x轴和y轴刻度标签的字体大小 # colormap:如果一个图表上显示多列的数据,选择颜色族以区分不同的列 # subplots:是否分子图显示,默认为None,如果一个图标上显示多列的数据,是否将不同的列拆分到不同的子图上显示 # label:图例标签,默认为None,DataFrame格式以列名为label # alpha:透明度