携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情
也是暑假自学python的第22天
matplotlib绘图
昨天初步安装使用了matplotlib,今天开始学习使用matplotlib来对图像进行绘制:
具体细分为折线图,散点图,条形图,直方图以及饼状图
折线图的绘制
折线图主要是传入x与y,使用plot来对其进行绘制:
from matplotlib import pyplot as plt
# x轴的位置
x=range(1,8)
y=[17,17,18,15,11,11,13]
plt.plot(x,y)
plt.show()
x的位置为1-8,y的位置使用数组来表示:
注意:range为左闭右开,range(1,8)表示1,2,3,4,5,6,7这七个数字
在绘制图像中可以使用plot方法来对图像进行控制:
plt.plot(x,y,color='red',alpha=0.5,linestyle='--',linewidth=4)
color:颜色
alpha:透明度
linestyle:折线的样式( - :实线,--:短线,-.:短线与点相间,::虚点线)
linewidth:线宽度
设置图片的大小和形状
#设置画布的大小
plt.figure(figsize=(20,8),dpi=80)
可以设置画布的大小,在画布上进行画图。
将绘制好的图像进行保存:
plt.savefig('./t1.png')
可以保存为png格式与svg格式。
png和svg的区别可以具体百度一下,这里我就不写了。
plt.xticks(range(1,25))
plt.yticks(range(min(y),max(y)+1))
设置x轴与y轴
一图多线
一图多线就是绘制多条线:
y1=[1,2,4,5,6,9,7,9,1]
y2=[1,5,6,4,8,2,3,3,1]
x=range(10,19)
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y1,color='red',label='张三')
plt.plot(x,y2,color='blue',label='Elisa')
plt.show()
绘制结果为:
一张画布绘制多个图像
from matplotlib import pyplot as plt
import numpy as np
x=np.arange(1,100)
#画布切分,要绘制多少张图片
fig,axes=plt.subplots(2,2)
ax1=axes[0,0]
ax2=axes[0,1]
ax3=axes[1,0]
ax4=axes[1,1]
fig=plt.figure(figsize=(20,10),dpi=80)
ax1.plot(x,x)
ax2.plot(x,-x)
ax3.plot(x,x**2)
ax4.plot(x,np.log(x))
plt.show()
其中ax{i}分别控制四个小的画布 绘制结果如下:
其中使用fig,axes=plt.subplots(2,2)来对画布进行切分
在这里使用到了numpy,需要安装一下,在cmd窗口看是否安装好了numpy:
pip list|findstr numpy
显示结果如下:
在matplotlib一页多图时还有一种方法,在上面的方法中,绘制的整个图像dpi为1600,而用一下的方法绘制出来的四个图像每一个小图像的dpi都为1600:
fig=plt.figure(figsize=(20,10),dpi=80) #新建子图1
ax1=fig.add_subplot(2,2,1)
ax1.plot(x, x)
其中整个代码如下:
#另一种绘制子图的方式
x = np.arange(1,100)
#新建figure对象
fig=plt.figure(figsize=(20,10),dpi=80) #新建子图1
ax1=fig.add_subplot(2,2,1)
ax1.plot(x, x)
#新建子图2
ax3=fig.add_subplot(2,2,2)
ax3.plot(x, x**2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
# 新 建 子 图 3
ax4=fig.add_subplot(2,2,3)
ax4.plot(x, np.log(x))
# 新 建 子 图 4
ax2=fig.add_subplot(2,2,4)
ax2.plot(x, -x)
plt.show()
绘制的结果为:
在图像中每个小块图像的dpi都为1600
matplotlib绘制的折线图就学到这里了。
================================================================