用matplotlib.pyplot绘制线形图

学习了图例、注释(text、figtext、annotate)、网格、刻度线标签等的设置。
现使用它们绘图 。

plt.plot(*args,**kwargs)
#使用的是命名关键字参数

plt.text(x,y,s,**kwargs)
#x,y为绘制文本的位置,默认的坐标系是数据坐标系,可通过trans更换
#s为文本

plt.figtext(x,y,s,**kwargs)
#默认的坐标系为图表坐标系

plt.annocate(s,xy,xytext,xycoords,textcoords,arrowprops)
#绘制箭头注释文本
#下面有解释

第一幅图

import numpy
import pandas
import matplotlib.pyplot as plt
import matplotlib
x=numpy.arange(-2*numpy.pi,2*numpy.pi,0.01)
y1=numpy.sin(x)/x
y2=numpy.sin(2*x)/x
y3=numpy.sin(3*x)/x
plt.xlabel(r'x',color='r',fontsize=18)
plt.ylabel(r'y',color='r',fontsize=18,rotation=360)
plt.title(r'不同图形的比较',fontsize=18)
plt.plot(x,y1,'g--',label=r'$\frac{\sinx}{x}$',lw=2)
plt.plot(x,y2,'r-.',label=r'$\frac{\sin2x}{x}$',lw=2)
plt.plot(x,y3,color='k',label=r'$\frac{\sin2x}{x}$',lw=2)
plt.legend(loc=1)
plt.grid(True)

#刻度位置,刻度文本
#可传入color设置颜色,rotation设置旋转,fontsize设置文本标签大小
plt.xticks([-2*numpy.pi,-numpy.pi,0,numpy.pi,2*numpy.pi],
           [r'$-2 \pi$',r'$- \pi$',r'$0$',r'$\pi$',r'$2 \pi$'])

这里写图片描述
第二幅图

# -*- coding: utf-8 -*-
import numpy
import pandas
import matplotlib.pyplot as plt
import matplotlib
from matplotlib import transforms#这个用在创建混合坐标时,这里没用到

x=numpy.arange(-2*numpy.pi,2*numpy.pi,0.01)
y1=numpy.sin(x)/x
y2=numpy.sin(2*x)/x
y3=numpy.sin(3*x)/x

fig,ax=plt.subplots()
plt.title(r'不同图形的比较',fontsize=18)
plt.plot(x,y1,'g--',label='n=1',lw=2)
plt.plot(x,y2,'r-.',label='n=2',lw=2)
plt.plot(x,y3,color='k',label='n=3',lw=2)
plt.legend(loc=1)

#使用笛卡尔坐标系的形式
#先将x轴,y轴的刻度文本的显示形式改成合适的
plt.xticks([-2*numpy.pi,-numpy.pi,0,numpy.pi,2*numpy.pi],
           [r'$-2 \pi$',r'$- \pi$',r'$0$',r'$\pi$',r'$2 \pi$'])
plt.yticks([-1,0,1,2,3],
           ['$-1$','$0$','$1$','$2$','$3$'])

#将于坐标轴不符的边(右、上)的颜色设置为None
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

#将与x轴、y轴相似的边(bottom、left)移动到穿过原地(0,0)的位置
#set_ticks_position设置轴的刻度线及刻度文本的位于哪条边
#set_position设置边的移动
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))

#设置带箭头注释文本
#参数顺序:注释文本,xy箭头指向位置,xytext文本位置,
#xycoords箭头使用坐标系,textcoords文本位置使用的坐标系
#一般这么用:xytext=[30,30],textcoords='offset points',注释文本与箭头的相对闻之不变
plt.annotate(r'$\lim_{x\to o} \frac{sinx}{x} =1$',xy=[0,1],xycoords='data',
             xytext=[30,30],textcoords='offset points',
             arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))

#在图表任意位置添加文本,bbox:有矩形包围
plt.text(-4,2,r'$\frac{\sin(nx)}{x}$',fontsize=18,
        bbox={'color':'g','alpha':0.4,})

#绘制阴影填充
ax.fill_between(x,y2,y3,where=y3>y2,
                color='g',alpha=0.5)

#绘制矩形阴影
#这个在这里不合适,具体方法见图例与注释篇

这里写图片描述

为DataFrame数据结构绘制线形图

a=['white','red','black','green','yellow','blue','grey','pink']
data=pandas.DataFrame({'color':numpy.random.choice(a,(20,),replace=True),
                       'ser1':numpy.random.randint(0,2,20),
                       'ser2':numpy.random.randint(3,5,20),
                       'ser3':numpy.random.randint(6,8,20),
                       'rank':numpy.arange(20)})
data
fig,ax=plt.subplots()
var=['ser1','ser2','ser3']
plt.plot(data['rank'],data[var])
plt.legend(var)

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_41357131/article/details/80205445