Matplotlib数据可视化基本操作

      matplotlib是一个Python的2D绘图库,最流行的Python底层绘图库,主要做数据可视化。

      matplotlib使用时需要先导入库,有两种导入方式

from matplotlib import pyplot as plt
import matplotlib.pyplot as plt

      绘制一个简单的方程y=2x+1

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1,1,50)
y = 2 * x + 1
plt.plot(x,y)
plt.show()

      如果有多方函数可以定义多个figure,并指定figure的一些参数,也可以指定所画方程的一些参数

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure(num=1) #序号为1的figure
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--') #指定y1方程的颜色,线的宽度为1.0,线的形状为虚线
plt.figure(num=2,figsize=(8,5)) #序号为2的figure,并指定的这个figure的长为8,高为5
plt.plot(x,y2)
plt.show()

      xlim,ylim可以自定义坐标轴的范围。xlabel,ylabel描述x轴、y轴。ticks用来设置坐标轴单位的小标。

import numpy as np
x = np.linspace(-3,3,50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2)
plt.xlim((-1,2)) #x坐标轴的范围
plt.ylim((-2,3)) #y坐标轴的范围
plt.xlabel('I am x') #描述x轴
plt.ylabel('I am y') #描述y轴
new_ticks=np.linspace(-1,2,5)
plt.xticks(new_ticks) #对x轴的小标进行修改
plt.yticks([-2,-1.8,-1,1.22,3],[r'$really\ bad$','$bad$','$normal$','$good$',r'$really\ good$'])
#对y轴的小标进行修改,里面为两个列表,第一个列表为x轴上的小标,第二个列表为x轴上的小标对应的y轴的小标
plt.show()

       对坐标轴进行操作

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2)
plt.xlim((-1,2)) #x坐标轴的范围
plt.ylim((-2,3)) #y坐标轴的范围
plt.xlabel('I am x') #描述x轴
plt.ylabel('I am y') #描述y轴
ax = plt.gca()
ax.spines['right'].set_color('none') #去掉右边的坐标轴
ax.spines['top'].set_color('none') #去掉上边的坐标轴
ax.xaxis.set_ticks_position('bottom') #用下边的坐标轴表示x轴
ax.yaxis.set_ticks_position('left') #用左边的坐标轴表示y轴
ax.spines['bottom'].set_position(('data',0)) #设置下边的坐标轴(即x轴)的位置
ax.spines['left'].set_position(('data',0)) #设置左边的坐标轴(即y轴)的位置
plt.show()

      legend图例。不指定参数采用默认打印图例用plt.legend(),如果指定参数,handles说明图例的线条,labels用来指定对应线条的名字,loc用来指定legend的位置

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.xlim((-1,2)) #x坐标轴的范围
plt.ylim((-2,3)) #y坐标轴的范围
plt.xlabel('I am x') #描述x轴
plt.ylabel('I am y') #描述y轴
line1, = plt.plot(x,y2,label='up')
line2, = plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--',label='down')
plt.legend(handles=[line1,line2],labels=['aaa','bbb'],loc='best')
plt.show()

      annotation标注

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y = 2 * x + 1
plt.figure(num=1,figsize=(8,5))
plt.plot(x,y)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
x0 = 1
y0 = 2 * x0 + 1
plt.scatter(x0,y0,s=50,color='b') #展示(x0,y0)这个点,大小为50,颜色为blue
plt.plot([x0,x0],[y0,0],'k--',lw=2.5) #(x0,y0)和(x0,0)两个点之间生成一条颜色为黑色的虚线,线宽2.5
plt.annotate(r'$2x+1=%s$' % y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',
            fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2')) #arrowprops表示箭头的类型

plt.text(-3,3,r'$This\ is\ some\ text.\mu\ \sigma_i\ \alpha_t$',fontdict={'size':16,'color':'red'})
plt.show()

猜你喜欢

转载自www.cnblogs.com/chenjin2018/p/13378679.html