matplotlib入门及实践

一直对matplotlib都是碰到哪个函数百度哪个,次数多了就有点烦,干脆列个知识清单系统地学习一下。

1.快速绘图

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 1000)#在(0,10)均匀返回1000个点
y = np.sin(x)
z = np.cos(x**2)

plt.figure(figsize=(8,4))  #设置大小为800*400像素
plt.plot(x,y,label="sin(x)",color="red",linewidth=2)
plt.plot(x,z,"b--",label="cos(x^2)")
plt.xlabel("Time(s)")
plt.ylabel("Volt")
plt.title("PyPlot First Example")
plt.ylim(-1.2,1.2)  #y的绘图范围
plt.legend()  #显示图例,即显示label
plt.show()

plot()中有一个线型的参数

linesyle:'-'实线, '--'短线, '-.'短点相间线, ':'虚点线。



2.绘制多轴图

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

plt.subplot(221) # 第一行的左图
plt.subplot(222) # 第一行的右图
plt.subplot(212) # 第二整行
plt.show()

subplot(numRows, numCols, plotNum)

subplot将整个绘图区域等分为numRows行 * numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。选择在plotNum处绘图。



3.绘制叠加图

除了绘制多轴图外,也可以在同一幅图里绘制多条曲线

t = np.arange(0., 5., 0.02)
y1=t
y2=t**2
y3=t**3
plt.plot(t, y1, 'r-', t, y2, 'b--', t, y3, 'g:')
plt.show()

扫描二维码关注公众号,回复: 29054 查看本文章


4.绘制多样式图

首先给出一组数据

x = [1, 2, 3, 4, 5]
y = [2.3, 3.4, 1.2, 6.6, 7.0]

1)曲线图

即为第一部分的plot

2)散点图

plt.scatter(x, y, color='r', marker='+')
plt.show()

scatter()常用的color和marker见

https://blog.csdn.net/qiu931110/article/details/68130199


3)扇形图

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

labels='frogs','hogs','dogs','logs'
sizes=15,20,45,10
colors='yellowgreen','gold','lightskyblue','lightcoral'
explode=0,0.2,0,0
plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=50)
plt.axis('equal')
plt.show()

其中explode是分离系数,默认为0,0.2即为0.2倍的半径长度

autopct='%1.1f%%'是指小数点后保留1位小数

shadow为True时有阴影,有立体效果,个人觉得更好看。

startangle即起始角度,参考系类似于二维坐标系,逆时针为正。


4)柱状图

plt.figure(figsize=(9,6))
n = 8
X = np.arange(n)+1
#X是1,2,3,4,5,6,7,8,柱的个数
# numpy.random.uniform(low=0.0, high=1.0, size=None), normal
#uniform均匀分布的随机数,normal是正态分布的随机数,0.5-1均匀分布的数,一共有n个
Y1 = np.random.uniform(0.5,1.0,n)
Y2 = np.random.uniform(0.5,1.0,n)
plt.bar(X,Y1,width = 0.35,facecolor = 'lightskyblue',edgecolor = 'white')
#width:柱的宽度
plt.bar(X+0.35,Y2,width = 0.35,facecolor = 'yellowgreen',edgecolor = 'white')
#水平柱状图plt.barh,属性中宽度width变成了高度height
#打两组数据时用+
#facecolor柱状图里填充的颜色
#edgecolor是边框的颜色
#想把一组数据打到下边,在数据前使用负号
#plt.bar(X, -Y2, width=width, facecolor='#ff9999', edgecolor='white')
#给图加text
for x,y in zip(X,Y1):
    plt.text(x, y, '%.2f' % y, ha='center', va= 'bottom')

for x,y in zip(X,Y2):
    plt.text(x+0.35, y, '%.2f' % y, ha='center', va= 'bottom')
plt.ylim(0,+1.25)
plt.show()


5.一些设置工具

1)plt.text()添加文字说明

  • text()可以在图中的任意位置添加文字,并支持LaTex语法
  • xlable(), ylable()用于添加x轴和y轴标签
  • title()用于添加图的题目

2)plt.axis()设置x,y轴范围

plt.axis([Xmin,Xmax,Ymin,Ymax])

3)plt.annotate()文本注释

t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = plt.plot(t, s, lw=2)
plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
            arrowprops=dict(facecolor='black', shrink=0.0),)#shrink为收缩指数
plt.ylim(-2,2)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Sample')
plt.show()



猜你喜欢

转载自blog.csdn.net/banzhuan133/article/details/79957543