Matplotlib简介
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。
导入库
import numpy as np import pandas as pd import matplotlib.pyplot as plt from pandas import Series,DataFrame #内嵌画图 %matplotlib inline #绘图时可以显示中文 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False
常用方法
设置图像标题:plt.title()
设置x轴名称:plt.xlabel()
设置y轴名称:plt.ylabel()
设置x轴范围:plt.xlim()
设置y轴范围:plt.ylim()
设置x轴刻度:plt.xticks()
设置y轴刻度:plt.yticks()
设置曲线图例:plt.legend()
画布与子图
画布:figure fig = plt.figure() 图:subplot ax1 = fig.add_subplot(2,2,1) 调节子图间距: subplots_adjust(left, bottom, right, top, wspace, hspace) plt.figure(figsize=(6,8)) 表示figure 的大小为宽、长(单位为inch) plt.subplot(121) 表示整个figure分成1行2列,共2个子图,这里子图在第一行第一列 plt.subplot(122) 表示子图在第一行第二列
画折线图
图一
plot函数:绘制折线图 线型linestyle(-,-.,--,..) 点型marker(v,^,s,*,H,+,x,D,o,…) 颜色color(b,g,r,y,k,w,…) plt.plot([1,2,3,4],[2,3,1,8],color="red",linestyle="--",marker="*" ,label='lineA') # 画折线() plt.plot([1,2,3,4],[2,4,6,9],color="blue",linestyle="-",marker="o" ,label='lineB') plt.title('matplotlib Test') plt.xlabel('XLabel') plt.ylabel('YLabel') plt.xlim(0,6) # x轴刻度范围 plt.ylim(0,10) # y轴刻度范围 plt.xticks(np.arange(0,7,2)) plt.legend()
常用参数
线条方式
点型
图二
fig = plt.figure() ax1 = fig.add_subplot(1,2,1) #参数一:子图总行数,子图总列数,子图位置 ax1.plot([1,2,3,4],[7,9,10,8],label='ax1') ax2 = fig.add_subplot(1,2,2) ax2.plot([1,2,3,4],[2,4,6,8],label='ax2') ax1.legend() ax2.legend() plt.show()
图三
x=np.linspace(-3,3,50) #在(-3,3)之间生成50个样本数 y1=2*x+1 y2=x**2 plt.figure(num=1,figsize=(10,5)) #定义编号为1,大小为(10,5) plt.plot(x,y1,color='red',linewidth=2,linestyle='--') #颜色线宽及格式 plt.plot(x,y2) plt.xlim(-1,2) #x轴的范围 plt.ylim(-2,3) #y轴的范围 plt.xlabel("x轴") plt.ylabel("y轴") plt.show()
移动坐标轴
x=np.linspace(-3,3,50) #在(-3,3)之间生成50个样本数 y1=2*x+1 y2=x**2 plt.figure(num=2,figsize=(8,5)) #定义编号为2,大小为(8,5) plt.plot(x,y1,color='red',linewidth=2,linestyle='--') plt.plot(x,y2) plt.xlim(-1,2) #x轴的范围 plt.ylim(-2,3) #y轴的范围 plt.xlabel("x轴") plt.ylabel("y轴") new_ticks=np.linspace(-1,2,5) #-1到2分成5段,包含端点 print(new_ticks) plt.xticks(new_ticks) #进行替换新下标 plt.yticks([-2,-1,0,1,2,], [r'$really\ bad$','$bad$','$0$','$well$','$really\ well$']) ax=plt.gca() #get current axis ax.spines['right'].set_color('none') #边框属性设置为None 不显示 ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') #设置x坐标刻度数字或名称的位置,所有属性为:top,bottom,both,default,none ax.spines['bottom'].set_position(('data',0)) # 设置.spines边框x轴,设置.set_position设置边框的位置,y=0位置;位置所有属性有outward,axes,data ax.yaxis.set_ticks_position('left') ax.spines['left'].set_position(('data',0)) #坐标中心点在(0,0)位置
图例变化
x=np.linspace(-3,3,50) y1=2*x+1 y2=x**2 plt.figure(num=2,figsize=(8,5)) plt.xlim(-1,2) plt.ylim(-2,3) new_ticks=np.linspace(-1,2,5) plt.xticks(new_ticks) plt.yticks([-2,-1,1,2,], [r'$really\ bad$','$bad$','$well$','$really\ well$']) l1,=plt.plot(x,y1,color='red',linewidth=2,linestyle='--',label='linear line') l2,=plt.plot(x,y2,label='square line') #单独修改label的信息 plt.legend(loc='upper left',handles=[l1,l2],labels=['up','down']) #显示在左上位置 plt.show() #显示图 #loc参数 best upper right upper left lower left lower right right center right lower center upper center center
bar图
data=[20,30,40,50] labels=['Jan','Feb','Mar','Apr'] plt.bar(np.arange(len(data)),data,width=.3) plt.xticks(np.arange(len(data)),labels) plt.show()
import numpy as np import matplotlib.pyplot as plt # 数据 N = 5 x = [20, 10, 30, 25, 15] y = np.arange(N) # 绘图 y= y轴, left= 水平条的底部, height 水平条的宽度, width 水平条的长度 p1 = plt.barh(y, left=0, height=0.5, width=x) # 展示图形 plt.show()
N = 5 y = [20, 10, 30, 45, 15] x = np.arange(N) # 添加地名坐标 str1 = ("北京", "上海", "武汉", "深圳", "重庆") plt.figure(num=2,figsize=(10,5)) #定义编号为2,大小为(8,5) # 绘图 x x轴, height 高度, 默认:color="blue", width=0.8 p1 = plt.bar(x, height=y, width=0.5, label="城市指标", tick_label=str1) # 添加数据标签 for a, b in zip(x, y): plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=11) # 添加图例 plt.legend() # 展示图形 plt.show()
pie图
plt.pie([10,20,30],labels=['x','y','z'],autopct='%.2f%%',explode=[0.1,0,0.1]) plt.axis('equal') plt.show()