基本布局对象
figure对象是所有图表绘制的基础
构建图标的主要步骤
- 准备数据
- 生成图表
- 传入数据
- 调整图标的装饰
图表样式的修改以及图表装饰的接口
Matplotlib定义详细的图标装饰项接口,能够对图表几乎每一个细节进行修改
- 修改图表样式
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() fig,axes = plt.subplots() t = np.arange(0,2,0.01) s = np.sin(2*np.pi*t) # 修改线条颜色,线条形式 axes.plot(t,s,color='k',linestyle='-') s = np.sin(2*np.pi*(t+0.5)) axes.plot(t,s,color='c',linestyle='--') plt.show()
常用的color参数值
常用linesstyle参数值
- 修改装饰项
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() fig,axes = plt.subplots() t = np.arange(0,2,0.01) s = np.sin(2*np.pi*t) # 修改线条颜色,线条形式 axes.plot(t,s,color='k',linestyle='-',label='line1') s = np.sin(2*np.pi*(t+0.5)) axes.plot(t,s,color='c',linestyle='--',label='line2') # ticks styles axes.set_xticks(np.arange(0,2,0.5)) axes.set_yticks([-1,0,1]) axes.minorticks_on() # axes position # 对边框进行修改,隐藏右边框和上边框 axes.spines['right'].set_color('none') axes.spines['top'].set_color('none') # 指定边框的位置,第一个参数表示位置的种类,第二个参数表示边框的位置 # axes.spines['bottom'].set_position(('data',0)) # axes.spines['left'].set_position(('data',0)) axes.spines['bottom'].set_position('center') axes.spines['left'].set_position('zero') # 'center' 等于('data',0.5) # zero 等于 ('data',0) # legend # 设置图例,loc bbox_to_anchor 确定位置的参数 axes.legend(loc='upper right',bbox_to_anchor=(1.1,1)) plt.show()
添加注释
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() fig,axes = plt.subplots() axes.plot(np.arange(0,24,2),[14,9,7,5,12,19,23,26,27,24,24,19],'-o') axes.set_xticks(np.arange(0,24,2)) # 生成一个带箭头的注释 ''' axes.annotate('hottest at 16:00',xy=(16,27),xytext=(16,22),arrowprops=dict( facecolor = 'black',shrink=0.2), horizontalalignment='center',verticalalignment='center' ) 参数依次是 注释文字 xy 箭头尖端位置 xytext 注释文字位置 arrowprops=dict( 箭头样式参数 facecolor 箭头颜色 shrink 箭头与文字之间的距离 horizontalalignment verticalalignment 文字在水平位置和垂直位置向上对齐的方式 ''' axes.annotate('hottest at 16:00',xy=(16,27),xytext=(16,22),arrowprops=dict( facecolor = 'black',shrink=0.2), horizontalalignment='center',verticalalignment='center' ) ''' axes.text() 参数分别为 文字的位置 注释文字 背景框的样式(课可以指定, 背景颜色 透明度 文字与背景框之间的距离) ''' axes.text(12,10,'Date: March 26th 2018',bbox={'facecolor':'cyan','alpha':0.3,'pad':6}) plt.show()
基础图表绘制
直方图
是一种直观描述数据集集中每一个区间内数据值出现频数的统计图
通过直方图,可以大致了解数据的分布,判断数据集中的区间
import matplotlib.pyplot as plt import numpy as np data = np.random.standard_normal(1000) # 分组 bins = 50 fig,axes = plt.subplots() # 直方图 axes.hist(data,bins) axes.set_title("Histogram") plt.show() # 直方图加标准正态密度函数图像 number_of_bins = 50 fig,axes = plt.subplots() n,bins ,patch=axes.hist(data,number_of_bins,density=True) standard_data = ((1/(np.sqrt(2*np.pi)*1))*np.exp(-0.5*(1/1*(bins-0))**2)) axes.plot(bins,standard_data,0,'-') plt.show()
散点图
可以将样本数据绘制在二维平面上777直观的显示分布情况,初步判断两个变量之间的关系
import matplotlib.pyplot as plt import numpy as np n = 60 np.random.seed(100) x = np.random.rand(n) y = np.random.rand(n) # plt.scatter(x,y) fig,axes= plt.subplots() axes.scatter(x,y) plt.show() # 根据值改变点大大小和颜色 n1 = 60 np.random.seed(100) x = np.random.rand(n1) y = np.random.rand(n1) s = np.pi*(10*np.random.rand(n1))**2 c= -s # plt.scatter(x,y) fig,axes= plt.subplots() # x y 标记点面积,颜色,透明度 axes.scatter(x,y,s,c,alpha=0.7) plt.show()
饼图
饼图可以直观的显示某一类数据在全部样本数据的百分比
import matplotlib.pyplot as plt import numpy as np fig,axes = plt.subplots() labels = 'Taxi','Metro','Walk','Bus','Bicycle','Driving' sizes = [10,30,5,25,5,25] explode = (0,0.1,0,0,0,0) axes.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=True,startangle=90) axes.axis('equal') axes.set_title('pie chart') plt.show()