记录从准研一假期自学PYTHON的全过程day22

107 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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这七个数字

image.png 在绘制图像中可以使用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()

绘制结果为:

image.png

一张画布绘制多个图像
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}分别控制四个小的画布 绘制结果如下:

image.png

其中使用fig,axes=plt.subplots(2,2)来对画布进行切分

在这里使用到了numpy,需要安装一下,在cmd窗口看是否安装好了numpy:

pip list|findstr numpy

显示结果如下:

image.png

在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()

绘制的结果为:

image.png

在图像中每个小块图像的dpi都为1600

matplotlib绘制的折线图就学到这里了。

================================================================