Matplotlib基础图形

Reads: 956 Edit

Python最流行的绘图库是Matplotlib,借助matplotlib可以轻松对数据进行可视化。

Pyplot则是Matplotlib 的子库,提供了绘图的具体函数。

>>> import numpy as np
>>> import pandas as pd
>>> import matplotlib.pyplot as plt

1 散点图

基础用法:

>>> x=np.array([0.051,0.926,0.209,0.358,1.672,-1.191,1.404,1.112,0.108,-0.429,0.746,1.304,0.292,-1.587,-0.815])
>>> y=np.random.rand(15)
>>> plt.scatter(x,y)
<matplotlib.collections.PathCollection object at 0x00000196E9CCBCA0>
>>> plt.show()

pyt-63

控制颜色和大小:

>>> x=np.array([0.051,0.926,0.209,0.358,1.672,-1.191,1.404,1.112,0.108,-0.429,0.746,1.304,0.292,-1.587,-0.815])
>>> y=np.random.rand(15)
>>> plt.scatter(x,y,c='green',s=100)
>>> plt.xlabel('title-X')
>>> plt.ylabel('title-Y')
>>> plt.show()

pyt-64

控制每一个散点:

>>> x=np.array([0.051,0.926,0.209,0.358,1.672,-1.191,1.404,1.112,0.108,-0.429,0.746,1.304,0.292,-1.587,-0.815])
>>> y=np.random.rand(15)
>>> size=np.array([100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500])       
>>> colors=np.array(['black','green','yellow','blue','orange','purple','beige','red','black','green','yellow','purple','beige','green','yellow'])                       
>>> plt.scatter(x,y,c=colors,s=size)
>>> plt.xlabel('title-X')
>>> plt.ylabel('title-Y')
>>> plt.show()

pyt-65

分组散点图:

>>> df1 = pd.DataFrame(np.random.rand(20, 4), columns=['y1', 'x1', 'y2', 'x2'])            
>>> plt.scatter(df1['x1'],df1['y1'],c='blue')
>>> plt.scatter(df1['x2'],df1['y2'],c='red')
>>> plt.show()

pyt-66

2 线图

基础用法:

>>> y=np.array([50,68,79,93,115,114,127])                   
>>> plt.plot(y)
>>> plt.show()

pyt-67

控制标记和线的属性:

>>> y=np.array([50,68,79,93,115,114,127]) 
>>> plt.plot(y,marker = 'o',linestyle = 'dotted',color = 'r',linewidth = '2.5')
>>> plt.show()

pyt-68

绘制多条线:

>>> y1=np.array([50,68,79,93,115,114,127])                      
>>> y2=np.array([64,86,89,105,117,130,121])
>>> plt.plot(y1,marker = 'o',linestyle = 'dotted',color = 'blue',linewidth = '2')
>>> plt.plot(y2,marker = '*',linestyle = 'dashed',color = 'green',linewidth = '3')
>>> plt.show()

pyt-68-1

3 柱状图

基础用法:

>>> x = np.array(["dataset1", "dataset2", "dataset3", "dataset4"])                     
>>> y = np.array([120,160,55,90])                   
>>> plt.bar(x, y)
>>> plt.show()

pyt-69

控制柱的属性:

>>> x = np.array(["dataset1", "dataset2", "dataset3", "dataset4"])                     
>>> y = np.array([120,160,55,90]) 
>>> plt.bar(x, y,width=0.2,color = ["yellow","green","hotpink","blue"])
>>> plt.show()

pyt-70

控制柱的方向:

>>> x = np.array(["dataset1", "dataset2", "dataset3", "dataset4"])                     
>>> y = np.array([120,160,55,90]) 
>>> plt.barh(x,y,height=0.2)
>>> plt.show()

pyt-71

绘制堆叠柱状图:

>>> x = np.array(["第一季度", "第二季度", "第三季度", "第四季度"])
>>> firm1=np.array([120,160,55,90])                   
>>> firm2=np.array([330,210,230,170])
>>> plt.bar(x,firm1,width=0.2,label='公司1')
>>> plt.bar(x,firm2,width=0.2,bottom=firm1,label='公司2')
>>> plt.rcParams['font.sans-serif'] = ['SimHei']
>>> plt.legend()
>>> plt.show()

pyt-71-1

绘制并列柱状图:

>>> x_label=np.array(["第一季度", "第二季度", "第三季度", "第四季度"])                       
>>> index=np.arange(len(x_label))                               
>>> firm1=np.array([120,160,55,90])                               
>>> firm2=np.array([330,210,230,170])                                
>>> bar_width=0.2                           
>>> plt.bar(index,firm1,width=bar_width,label='公司1')
>>> plt.bar(index+bar_width,firm2,width=bar_width,label='公司2')
>>> plt.xticks(index+bar_width/2,x_label)
>>> plt.rcParams['font.sans-serif'] = ['SimHei']                             
>>> plt.legend()
>>> plt.show()

pyt-71-2

4 饼图

基础用法:

>>> y = np.array([120,160,55,90])
>>> plt.pie(y)
>>> plt.show()

pyt-72

控制区块的属性:

>>> y = np.array([120,160,55,90])
>>> plt.pie(y,
...         labels=['label1','label2','label3','label4'], 
...         colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], 
...         explode=(0.1, 0, 0.1, 0), 
...         autopct='%.2f%%', 
...        )
>>> plt.show()

pyt-73


Comments

Make a comment