教你快速上手Pyplot,画出各种你想要的图

Posted 振华OPPO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教你快速上手Pyplot,画出各种你想要的图相关的知识,希望对你有一定的参考价值。

学习目录

一、Pyplot简介

  • Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。

  • Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。

  • Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生成新的图像,在图像中产生新的绘图区域等等。

二、Pyplot导入

我们可以使用 import 导入 pyplot 库,并设置一个别名 plt:

from matplotlib import pyplot as plt

这样我们就可以使用 plt 来引用 pyplot 包的方法。

三、Pyplot绘图

✈️1、折线图

from matplotlib import pyplot as plt
import numpy as np

xpoints=np.array([0,10])
ypoints=np.array([0,100])
plt.plot(xpoints,ypoints)
plt.show()

我们通过两个点(0,0)和(10,100)绘制出折线图,x轴的点坐标就是0和10,y轴的点坐标就是0,100。分别将x轴的点和y轴的点存放到数组中,再调用plot画在画布上,最后show显示出来就搞定了。

🚄2、熟悉plot()函数

plot() 用于画图它可以绘制点和线,语法格式如下:

#画单条线
plot([x], y, [fmt], *, data=None, **kwargs)
#画多条线
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
  • x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。
  • fmt:可选,定义基本格式(如颜色、标记和线条样式)。
  • **kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。

颜色字符:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’ 青绿色,’#008000’ RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。

线条样式:’‐’ 实线,’‐‐’ 破折线,’‐.’ 点划线,’:’ 虚线。

标记字符:’.’ 点标记,’,’ 像素标记(极小点),‘o’ 实心圈标记,‘v’ 倒三角标记,’^’ 上三角标记,’>’ 右三角标记,’<’ 左三角标记 等等。

纸上得来终觉浅,绝知此事要躬行,大家看下面几个实例就明白了。

我们可以绘制任意数量的点,只需确保两个轴上的点数相同即可。绘制一条不规则线,坐标为 (1, 3) 、 (2, 8) 、(6, 1) 、(8, 10),对应的两个数组为:[1, 2, 6, 8] 与 [3, 8, 1, 10]。

我们给线条变成红色,并且线条样式为虚线,再让每个点都被‘o’符号标记:

from matplotlib import pyplot as plt
import numpy as np

xpoints=np.array([1, 2, 6, 8])
ypoints=np.array([3, 8, 1, 10])
plt.plot(xpoints,ypoints,'r--o')
plt.show()

可以看到plot中多了个参数'r--o',它其实就是刚刚的[fmt],分别代表了颜色字符r,线条样式–,标记字符o,这三者的顺序随意,个数随意,非常方便。

这里参数改成了'.g-.',可以得知引号中第一个参数是符号标记‘.’ ; 第二个是颜色字符g ; 第三个是线条样式-. 。这样就变成了绿色的点划线,并且点都被标记出来了。

plt.plot(xpoints,ypoints,'.g-.')


如果我们不指定 x 轴上的点,则 x 会根据 y 的值来设置为 0, 1, 2, 3…N-1。

from matplotlib import pyplot as plt
import numpy as np

ypoints=np.array([2, 6, 2, 6,2])
plt.plot(ypoints,'.c:')
plt.show()

从下图可以看出 x 的值默认设置为 [0, 1, 2, 3, 4]。

🚉 3、轴标签和标题

我们可以使用 xlabel() 和 ylabel() 方法来设置 x 轴和 y 轴的标签。

from matplotlib import pyplot as plt
import numpy as np

xpoints=np.array([1,2,3,4,5])
ypoints=np.array([5,3,8,5,9])
plt.plot(ypoints,'oc-')
plt.xlabel('x-label')
plt.ylabel('y-label')
plt.show()


我们可以使用 title() 方法来设置标题。

from matplotlib import pyplot as plt
import numpy as np

xpoints=np.array([1,2,3,4,5])
ypoints=np.array([5,3,8,5,9])
plt.plot(ypoints,'oc-')
plt.title('picture')
plt.xlabel('x-label')
plt.ylabel('y-label')
plt.show()


如果我们想使用中文显示标题和标签,只需要加入一行plt.rcParams['font.family']=['STFangsong'],这样就可以使用系统字体中的“仿宋”。

from matplotlib import pyplot as plt
import numpy as np

plt.rcParams['font.family']=['STFangsong']
xpoints=np.array([1,2,3,4,5])
ypoints=np.array([5,3,8,5,9])
plt.plot(ypoints,'oc-')
plt.title('折线图')
plt.xlabel('博客写作时长')
plt.ylabel('涨粉数')
plt.show()


此外我们还可以自定义字体的样式:

from matplotlib import pyplot as plt
import numpy as np

plt.rcParams['font.family']=['STFangsong']
xpoints=np.array([1,2,3,4,5])
ypoints=np.array([5,3,8,5,9])
plt.plot(ypoints,'oc-')
plt.title('折线图',size='30',color='#ABCDEF')
plt.xlabel('数量',size='15',color='blue')
plt.ylabel('价格',size='20',color='m')
plt.show()

用size设置字体大小;color设置字体颜色,可以缩写,可以完整写,也可以用rgb十六进制写。

最后,我们可以修改标题与标签的定位:

from matplotlib import pyplot as plt
import numpy as np

plt.rcParams['font.family']=['STFangsong']
xpoints=np.array([1,2,3,4,5])
ypoints=np.array([5,3,8,5,9])
plt.plot(ypoints,'oc-')
plt.title('折线图',loc='right',size='30',color='#409882')
plt.xlabel('数量',loc='left',size='15',color='blue')
plt.ylabel('价格',loc='top',size='20',color='m')
plt.show()
  • title() 方法提供了 loc 参数来设置标题显示的位置,可以设置为: ‘left’, ‘right’, 和 ‘center’, 默认值为 ‘center’。

  • xlabel() 方法提供了 loc 参数来设置 x 轴显示的位置,可以设置为: ‘left’, ‘right’, 和 ‘center’, 默认值为 ‘center’。

  • ylabel() 方法提供了 loc 参数来设置 y 轴显示的位置,可以设置为: ‘bottom’, ‘top’, 和 ‘center’, 默认值为 ‘center’。


🚀 4、绘制多图

我们可以使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图。

subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。推荐大家使用subplot即可。

我们看下subplot函数的语法格式:subplot(nrows, ncols, index)

subplot( )将整个绘图区域分成 nrows 行和 ncols 列,然后从左到右,从上到下的顺序对每个子区域进行编号 1…N ,左上的子区域的编号为 1、右下的区域编号为 N,编号可以通过参数 index 来设置。

from matplotlib import pyplot as plt
import numpy as np
#plot1
xpoints=np.array([0,2,4,6,8])
ypoints=np.array([0,3,6,9,12])
plt.subplot(1,2,1)
plt.plot(xpoints,ypoints)
plt.xlabel('x')
plt.ylabel('y')
plt.title('plot1')

#plot2
x=np.array([1,3,5,8])
y=np.array([10,3,6,2])
plt.subplot(1,2,2)
plt.plot(x,y)
plt.title('plot2',color='m')
plt.show()

可以看到plot1和plot2在用plot前都加上了plt.subplot(1,2,1)plt.subplot(1,2,2),意思是说将画布分为一行两列,左边标号是1,右边标号是2,所以plot1就在左图位置,plot2就画在右图位置。就这么简单。

如果我们只在第一块区域画图,将plot2代码删去,运行一下。

from matplotlib import pyplot as plt
import numpy as np
#plot1
xpoints=np.array([0,2,4,6,8])
ypoints=np.array([0,3,6,9,12])
plt.subplot(1,2,1)
plt.plot(xpoints,ypoints)
plt.xlabel('x')
plt.ylabel('y')
plt.title('plot1')
plt.show()

可以看到只有plot1在画布的左侧,右侧没有图像,所以显示为空。

🚤5、绘制散点图

我们可以使用 pyplot 中的 scatter() 方法来绘制散点图。scatter() 方法语法格式如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

🎉参数说明

x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。

s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。

c:点的颜色,默认蓝色 ‘b’,也可以是个 RGB 或 RGBA 二维行数组。

marker:点的样式,默认小圆圈 ‘o’。

cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。

norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。

vmin,vmax:亮度设置,在 norm 参数存在时会忽略。

alpha:透明度设置,0-1 之间,默认 None,即不透明。

linewidths:标记点的长度。

其实上面这些参数不需要全部记住,常用的大小颜色记住即可,收藏之后,忘记了随时来看。


我们在画布上绘制下这8个点:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])

plt.scatter(x, y)
plt.show()

我们看下效果图:

我们来设置散点的大小:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,200,100])
plt.scatter(x, y,sizes=sizes)
plt.show()

通过定义一个sizes数组,数组元素就是每个点的大小:

我们还可以自定义点的颜色:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,200,100])
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])
plt.scatter(x, y,sizes=sizes,c=colors)
plt.show()

colors是颜色数组,存储了每个点的颜色:

Matplotlib 模块提供了很多可用的颜色条。颜色条就像一个颜色列表,其中每种颜色都有一个范围从 0 到 100 的值。

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,200,100])
colors = np.array([10, 20, 30, 40, 50, 60, 70, 80])
plt.scatter(x, y,sizes=sizes,c=colors,cmap='viridis')
plt.colorbar()
plt.show()

设置颜色条需要使用 cmap 参数,默认值为 ‘viridis’,之后颜色值设置为 0 到 100 的数组。如果要显示颜色条,需要使用 plt.colorbar() 方法:


以上就是所有pyplot的基本用法了,三连不迷路。

让别人相信你有搞定事情的毅力以及态度,做不出来绝不放弃,态度决定一切。

以上是关于教你快速上手Pyplot,画出各种你想要的图的主要内容,如果未能解决你的问题,请参考以下文章

一个脚本教你快速去除桌面图标烦人的小箭头

一个脚本教你快速去除桌面图标烦人的小箭头

一个脚本教你快速去除桌面图标烦人的小箭头

干货 | 两分钟教你上手api网关系统

10分钟教你快速上手Vue3中新增的API

10分钟教你快速上手Vue3中新增的API