Matplotlib

1、认识Matploblib

Matplotlib 是Python中类似 MATLAB 的绘图工具,熟悉 MATLAB 也可以很快的上手 Matplotlib。

1.1、Figure

在任何绘图之前,我们需要一个Figure对象,可以理解成我们需要一张画板才能开始绘图。

from matplotlib import pyplot as plt

#在任何绘图之前,我们需要一个Figure对象,可以理解成我们需要一张画板才能开始绘图。
fig = plt.figure()

1.2、Axes

在拥有Figure对象之后,在作画前我们还需要轴,没有轴的话就没有绘图基准,所以需要添加Axes。也可以理解成为真正可以作画的纸。

import numpy as np
from matplotlib import pyplot as plt

#在任何绘图之前,我们需要一个Figure对象,可以理解成我们需要一张画板才能开始绘图。
fig = plt.figure()
ax = fig.add_subplot(111)#添加Axes的


ax.set(xlim=[0.5, 4.5], ylim=[-2, 8], title='aaaa', ylabel='Y-Axis', xlabel='X-Axis')
# xlim=[0.5, 4.5]   设置X轴的最低值和最高值
# ylim=[-2, 8]      设置Y轴的最低值和最高值
# title='aaaa'      设置图的标题
# xlabel='X-Axis'   设置X轴的名称
# ylabel='Y-Axis'   设置Y轴的名称

plt.show()#展示图片

在这里插入图片描述

import numpy as np
from matplotlib import pyplot as plt

#在任何绘图之前,我们需要一个Figure对象,可以理解成我们需要一张画板才能开始绘图。
fig = plt.figure()

#参数的解释的在画板的第1行第1列的第一个位置生成一个Axes对象来准备作画
ax1 = fig.add_subplot(2,2,1)#添加Axes的
ax2 = fig.add_subplot(2,2,2)#添加Axes的
ax3 = fig.add_subplot(2,2,3)#添加Axes的
ax4 = fig.add_subplot(2,2,4)#添加Axes的
#2, 2会将整个面板划分成2 * 2的方格,最后一位数就是排列的顺序

plt.show()#展示图片

在这里插入图片描述

1.3、Multiple Axes

可以发现我们上面添加 Axes 似乎有点弱鸡,所以提供了下面的方式一次性生成所有 Axes:

import numpy as np
from matplotlib import pyplot as plt

fig, axes = plt.subplots(nrows=2, ncols=2)
#nrows=4  长为4个
#ncols=2  宽为2个

axes[0,0].set(title='Upper Left')#title='Upper Left' 设置标题
axes[0,1].set(title='Upper Right')
axes[1,0].set(title='Lower Left')
axes[1,1].set(title='Lower Right')

plt.show()#展示图

在这里插入图片描述

1.4、Axes Vs .pyplot

相信不少人看过下面的代码,很简单并易懂,但是下面的作画方式只适合简单的绘图,快速的将图绘出。在处理复杂的绘图工作时,我们还是需要使用 Axes 来完成作画的。

import numpy as np
from matplotlib import pyplot as plt

plt.plot([1, 2, 3, 4], [10, 20, 25, 30], color='lightblue', linewidth=3)
# [1, 2, 3, 4]          X轴数据
#[10, 20, 25, 30]       Y轴数据
#color='lightblue'      设置线的颜色
#linewidth=3            设置线的宽度

plt.xlim(0.5, 5)#设置X轴的总共长度,0.5起始值,5最长值
plt.ylim(1, 40)#设置Y轴的总共长度,1起始值,40最长值
plt.show()#展示图片

在这里插入图片描述

常用的 pyplot 函数:

plot():用于绘制线图和散点图
scatter():用于绘制散点图
bar():用于绘制垂直条形图和水平条形图
hist():用于绘制直方图
pie():用于绘制饼图
imshow():用于绘制图像
subplots():用于创建子图

2、Matplotlib 绘图标记

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([1,3,4,5,8,9,6,1,3,4,5,2,4])

plt.plot(ypoints, marker = 'o')
plt.show()

2.1、marker的样式:

在这里插入图片描述
在这里插入图片描述

2.2、fmt 参数

fmt 参数定义了基本格式,如标记、线条样式和颜色。
fmt = ‘[marker][line][color]’

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([6, 2, 13, 10])

plt.plot(ypoints, 'o:r')
#o 表示实心圆标记,: 表示虚线,r 表示颜色为红色。
plt.show()

在这里插入图片描述

2.3、设置点的大小和颜色

我们可以自定义标记的大小与颜色,使用的参数分别是:
markersize,简写为 ms:定义标记的大小。
markerfacecolor,简写为 mfc:定义标记内部的颜色。
markeredgecolor,简写为 mec:定义标记边框的颜色。

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([6, 2, 13, 10])
plt.plot(ypoints, marker = 'o', ms = 20, mec = '#4CAF50', mfc = '#4CAF50')
plt.show()

3、Matplotlib 绘图线

绘图过程如果我们自定义线的样式,包括线的类型、颜色和大小等。

3,1、线的类型

线的类型可以使用 linestyle 参数来定义,简写为 ls。
在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([6, 2, 13, 10])

plt.plot(ypoints, linestyle = 'dotted')
#plt.plot(ypoints, ls= 'dotted')
#写简写或全称都可以
plt.show()#展示图片

3,2、线的颜色

线的颜色可以使用 color 参数来定义,简写为 c。
在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([6, 2, 13, 10])

#plt.plot(ypoints, color = 'r')
plt.plot(ypoints, c = 'r')
#写简写或全称都可以
plt.show()#展示图片

4、Matplotlib 轴标签和标题

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

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)

plt.xlabel("x - label")#x轴
plt.ylabel("y - label")#y轴

plt.show()

4.1、标题

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

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)

plt.title("RUNOOB TEST TITLE")#设置标题
plt.xlabel("x - label")#设置x轴
plt.ylabel("y - label")#设置y轴

plt.show()

4.1、字体中文显示(解决了中文乱码问题)

from pylab import mpl
import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)

# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

plt.title("标题")#设置标题
plt.xlabel("X轴")#设置x轴
plt.ylabel("Y轴")#设置y轴

plt.show()

4.2、设置字体

可以下载网上的字体,具体方法看链接操作:https://www.runoob.com/matplotlib/matplotlib-label.html

4.2.1、字体、颜色,大小,定位设置

from pylab import mpl
import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)

# 设置显示中文字体为 "Microsoft JhengHei"(微软正黑体),要修改成为其他字体就改最后一个数据
mpl.rcParams["font.sans-serif"] = 
["Microsoft JhengHei"]

# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 添加标题,并设置标题字体大小为 16,颜色为蓝色,位置居中
plt.title("这是一个示例图表", fontsize=16, color='blue', loc='center')
#标题可以设置为: 'left', 'right', 和 'center', 默认值为 'center'。

# 添加 x 轴标签,并设置字体大小为 12,颜色为绿色
plt.xlabel("X轴", fontsize=12, color='green')

# 添加 y 轴标签,并设置字体大小为 12,颜色为红色
plt.ylabel("Y轴", fontsize=12, color='red')

# top:顶部 ,bottom:底部,center:居中,baseline:基线位置
plt.xlabel("X轴", fontsize=12, color='green', loc='center')
#X轴可以设置为: 'left', 'right', 和 'center', 默认值为 'cente

plt.ylabel("Y轴", fontsize=12, color='red', loc='center')
#Y轴可以设置为: 'bottom', 'top', 和 'center', 默认值为 'center'。

plt.show()

4.2.2、本地所有字体查看

from matplotlib import pyplot as plt
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])

for i in a:
    print(i)

SimSun(宋体):是 Windows 系统中最常用的中文字体之一,适合用于正文和标签等。
SimHei(黑体):也是 Windows 系统中常见的中文字体,适合用于标题和加粗的文字。
Microsoft YaHei(微软雅黑):这是一种较为现代的中文字体,适合用于正文和标签等。
Microsoft JhengHei(微软正黑体):适合用于标题和强调文字,有一些现代感。
FangSong(仿宋):适合用于一些书法风格的标题或特殊情况下的正文。

5、Matplotlib 网格线

我们可以使用 pyplot 中的 grid() 方法来设置图表中的网格线。
grid() 方法语法格式如下:

matplotlib.pyplot.grid(b=None, which='major', axis='both', )
b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true。
which:可选,可选值有 'major''minor''both',默认为 'major',表示应用更改的网格线。
axis:可选,设置显示哪个方向的网格线,可以是取 'both'(默认),'x''y',分别表示两个方向,x 轴方向或 y 轴方向。
**kwargs:可选,设置网格样式,可以是 color='r', linestyle='-' 和 linewidth=2,分别表示网格线的颜色,样式和宽度。

5.1、默认网格线

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.title("RUNOOB grid() Test")
plt.xlabel("x - label")
plt.ylabel("y - label")

plt.plot(x, y)

plt.grid()#使用默认参数的网格线,加上就有线,去掉就没有线

plt.show()

5.2、在 x 或 y 轴方向上显示网格线

axis 参数使用 x,设置 x 轴方向显示网格线,要是不写就是x和y一起显示

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])


plt.title("RUNOOB grid() Test")
plt.xlabel("x - label")
plt.ylabel("y - label")

# 绘制折线图,使用 x 数组作为 x 轴数据,y 数组作为 y 轴数据
plt.plot(x, y)

# 在 y 轴方向上显示网格线(要是不写这一句,就是不显示网格线)
plt.grid(axis='y')#写x就在x轴方向显示,写y就在y轴方向显示(要是里面不写就是x,y一起显示)

# 显示绘制的图表
plt.show()

5.3、设置网格线的样式

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])


plt.title("RUNOOB grid() Test")
plt.xlabel("x - label")
plt.ylabel("y - label")

# 绘制折线图,使用 x 数组作为 x 轴数据,y 数组作为 y 轴数据
plt.plot(x, y)

#color:'b' 蓝色,'m' 洋红色,'g' 绿色,'y' 黄色,'r' 红色,'k' 黑色,'w' 白色,'c' 青绿色,'#008000' RGB 颜色符串。
#linestyle:'‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线。
#linewidth:设置线的宽度,可以设置一个数字。
plt.grid(color = 'r', linestyle = '--', linewidth = 0.5)

# 显示绘制的图表
plt.show()

6、Matplotlib 绘制多图

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

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

subplot

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)

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

6.1、绘制一个一行两列的图

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

# Plot 1:

# 创建一个包含两个点的 NumPy 数组 xpoints,[0, 6] 分别代表 x 坐标的起始和终止值
xpoints = np.array([0, 6])

# 创建一个包含两个点的 NumPy 数组 ypoints,[0, 100] 分别代表 y 坐标的起始和终止值
ypoints = np.array([0, 100])

# 创建一个一行两列的子图,当前绘制第一个子图
plt.subplot(1, 2, 1)

# 绘制折线图,使用 xpoints 数组作为 x 轴数据,ypoints 数组作为 y 轴数据
plt.plot(xpoints, ypoints)

# 设置第一个子图的标题为 "plot 1"
plt.title("plot 1")


# Plot 2:

# 创建一个包含四个点的 NumPy 数组 x,[1, 2, 3, 4] 分别代表 x 坐标的四个数据点
x = np.array([1, 2, 3, 4])

# 创建一个包含四个点的 NumPy 数组 y,[1, 4, 9, 16] 分别代表 y 坐标的四个数据点
y = np.array([1, 4, 9, 16])

# 创建一个一行两列的子图,当前绘制第二个子图
plt.subplot(1, 2, 2)

# 绘制折线图,使用 x 数组作为 x 轴数据,y 数组作为 y 轴数据
plt.plot(x, y)

# 设置第二个子图的标题为 "plot 2"
plt.title("plot 2")

# 设置整个图表的总标题为 "RUNOOB subplot Test"
plt.suptitle("RUNOOB subplot 测试")

# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["Microsoft JhengHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 显示绘制的图表
plt.show()

在这里插入图片描述

6.2、绘制一个两行两列的图

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

# Plot 1:

# 创建一个包含两个点的 NumPy 数组 x,[0, 6] 分别代表 x 坐标的起始和终止值
x = np.array([0, 6])

# 创建一个包含两个点的 NumPy 数组 y,[0, 100] 分别代表 y 坐标的起始和终止值
y = np.array([0, 100])

# 创建一个两行两列的子图,当前绘制第一个子图
plt.subplot(2, 2, 1)

# 绘制折线图,使用 x 数组作为 x 轴数据,y 数组作为 y 轴数据
plt.plot(x, y)

# 设置第一个子图的标题为 "plot 1"
plt.title("plot 1")


# Plot 2:

# 创建一个包含四个点的 NumPy 数组 x,[1, 2, 3, 4] 分别代表 x 坐标的四个数据点
x = np.array([1, 2, 3, 4])

# 创建一个包含四个点的 NumPy 数组 y,[1, 4, 9, 16] 分别代表 y 坐标的四个数据点
y = np.array([1, 4, 9, 16])

# 创建一个两行两列的子图,当前绘制第二个子图
plt.subplot(2, 2, 2)

# 绘制折线图,使用 x 数组作为 x 轴数据,y 数组作为 y 轴数据
plt.plot(x, y)

# 设置第二个子图的标题为 "plot 2"
plt.title("plot 2")


# Plot 3:

# 创建一个包含四个点的 NumPy 数组 x,[1, 2, 3, 4] 分别代表 x 坐标的四个数据点
x = np.array([1, 2, 3, 4])

# 创建一个包含四个点的 NumPy 数组 y,[3, 5, 7, 9] 分别代表 y 坐标的四个数据点
y = np.array([3, 5, 7, 9])

# 创建一个两行两列的子图,当前绘制第三个子图
plt.subplot(2, 2, 3)

# 绘制折线图,使用 x 数组作为 x 轴数据,y 数组作为 y 轴数据
plt.plot(x, y)

# 设置第三个子图的标题为 "plot 3"
plt.title("plot 3")


# Plot 4:

# 创建一个包含四个点的 NumPy 数组 x,[1, 2, 3, 4] 分别代表 x 坐标的四个数据点
x = np.array([1, 2, 3, 4])

# 创建一个包含四个点的 NumPy 数组 y,[4, 5, 6, 7] 分别代表 y 坐标的四个数据点
y = np.array([4, 5, 6, 7])

# 创建一个两行两列的子图,当前绘制第四个子图
plt.subplot(2, 2, 4)

# 绘制折线图,使用 x 数组作为 x 轴数据,y 数组作为 y 轴数据
plt.plot(x, y)

# 设置第四个子图的标题为 "plot 4"
plt.title("plot 4")

# 设置整个图表的总标题为 "RUNOOB subplot Test"
plt.suptitle("RUNOOB subplot 测试")

# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["Microsoft JhengHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 显示绘制的图表
plt.show()

在这里插入图片描述

6.3、subplots()

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

subplots() 方法语法格式如下:

matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True,
 subplot_kw=None, gridspec_kw=None, **fig_kw)

nrows:默认为 1,设置图表的行数。

ncols:默认为 1,设置图表的列数。

sharex、sharey:设置 x、y 轴是否共享属性,默认为 false,可设置为 ‘none’、‘all’、‘row’ 或 ‘col’。 False 或 none 每个子图的 x 轴或 y 轴都是独立的,True 或 ‘all’:所有子图共享 x 轴或 y 轴,‘row’ 设置每个子图行共享一个 x 轴或 y 轴,‘col’:设置每个子图列共享一个 x 轴或 y 轴。

squeeze:布尔值,默认为 True,表示额外的维度从返回的 Axes(轴)对象中挤出,对于 N1 或 1N 个子图,返回一个 1 维数组,对于 N*M,N>1 和 M>1 返回一个 2 维数组。如果设置为 False,则不进行挤压操作,返回一个元素为 Axes 实例的2维数组,即使它最终是1x1。

subplot_kw:可选,字典类型。把字典的关键字传递给 add_subplot() 来创建每个子图。

gridspec_kw:可选,字典类型。把字典的关键字传递给 GridSpec 构造函数创建子图放在网格里(grid)。

fig_kw:把详细的关键字参数传给 figure() 函数。

# 导入 Matplotlib 和 NumPy 库
import matplotlib.pyplot as plt
import numpy as np

# 创建一些测试数据 -- 图1
# 使用 NumPy 的 linspace 函数在 0 到 2*pi 之间生成 400 个均匀间隔的点作为 x 坐标
x = np.linspace(0, 2*np.pi, 400)

# 计算 y 坐标,通过对 x 的平方进行正弦函数计算
y = np.sin(x**2)

# 创建一个画布和子图 -- 图2
# 创建一个画布,并在该画布上创建一个子图,ax 是 AxesSubplot 类的实例,用于绘制和设置子图的属性
fig, ax = plt.subplots()

# 在子图上绘制 x 和 y 的折线图
ax.plot(x, y)

# 设置子图的标题为 "Simple plot"
ax.set_title('Simple plot')

# 创建两个子图 -- 图3
# 创建一个画布,并在该画布上创建两个子图,其中 ax1 和 ax2 是 AxesSubplot 类的实例
# 这两个子图共享 y 轴
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)

# 在第一个子图上绘制 x 和 y 的折线图
ax1.plot(x, y)

# 设置第一个子图的标题为 "Sharing Y axis"
ax1.set_title('Sharing Y axis')

# 在第二个子图上绘制 x 和 y 的散点图
ax2.scatter(x, y)

# 创建四个子图 -- 图4
# 创建一个画布,并在该画布上创建两行两列共计 4 个子图,其中 axs 是 AxesSubplot 类的实例数组
# 子图 axs[0, 0] 和 axs[1, 1] 具有极坐标投影
fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))

# 在第一个子图上绘制 x 和 y 的折线图
axs[0, 0].plot(x, y)

# 在第二个子图上绘制 x 和 y 的散点图
axs[1, 1].scatter(x, y)

# 共享 x 轴
# 创建一个画布,并在该画布上创建两行两列共计 4 个子图,这 4 个子图共享 x 轴
plt.subplots(2, 2, sharex='col')

# 共享 y 轴
# 创建一个画布,并在该画布上创建两行两列共计 4 个子图,这 4 个子图共享 y 轴
plt.subplots(2, 2, sharey='row')

# 共享 x 轴和 y 轴
# 创建一个画布,并在该画布上创建两行两列共计 4 个子图,这 4 个子图同时共享 x 轴和 y 轴
plt.subplots(2, 2, sharex='all', sharey='all')

# 这个也是共享 x 轴和 y 轴
# 创建一个画布,并在该画布上创建两行两列共计 4 个子图,这 4 个子图同时共享 x 轴和 y 轴
plt.subplots(2, 2, sharex=True, sharey=True)

# 创建标识为 10 的图,已经存在的则删除
# 创建一个新的画布,并在该画布上创建一个子图,子图标识为 10,并清除之前存在的图表
fig, ax = plt.subplots(num=10, clear=True)

# 显示绘制的图表
plt.show()

7、绘制基本2D图

7.1、折线图

plot()函数画出一系列的点,并且用线将它们连接起来。

plt.plot() 函数用于绘制折线图,它接受多个参数来控制绘图的样式和内容。下面是一些常用的参数及其作用:

x 和 y: 分别是 x 轴和 y 轴上的数据点。这些参数是必需的。

label: 给绘制的线条指定一个标签,以便后续添加图例时使用。

color: 指定线条的颜色。可以使用颜色名称(例如 'red')或颜色代码(例如 '#FF0000')。

linestyle: 指定线条的样式,如 '-' 表示实线,'--' 表示虚线,':' 表示点线等。

marker: 指定数据点的标记样式,如 'o' 表示圆圈,'s' 表示正方形,'^' 表示三角形等。

linewidth 和 markersize: 分别控制线条的宽度和标记的大小。

alpha: 控制线条的透明度,取值范围从 0(完全透明)到 1(完全不透明)。

markerfacecolor 和 markeredgecolor: 分别设置标记内部和边缘的颜色。

label: 设置线条的标签,用于图例的显示。

title: 设置图表的标题。

xlabel 和 ylabel: 设置 x 轴和 y 轴的标签。

legend: 添加图例,显示标签对应的线条样式。

7.1.1一条线的折线图

import matplotlib.pyplot as plt
from pylab import mpl

# 数据
x_values = [1, 2, 3, 4, 5]
y_values = [10, 15, 7, 12, 8]

# 创建折线图
plt.plot(x_values, y_values, marker='o')

# 添加标题和标签
plt.title('折线图示例')
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')

# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["Microsoft JhengHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 显示图表
plt.show()

在这里插入图片描述

7.1.1两条线的折线图

import matplotlib.pyplot as plt
from pylab import mpl

# 数据
x_values = [1, 2, 3, 4, 5]
y_values1 = [10, 15, 7, 12, 8]
y_values2 = [8, 12, 6, 10, 5]

# 创建折线图
plt.plot(x_values, y_values1, marker='o', label='线条1')
plt.plot(x_values, y_values2, marker='o', label='线条2')

# 添加标题和标签
plt.title('双线折线图示例')
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')

# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["Microsoft JhengHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 添加图例
plt.legend()

# 显示图表
plt.show()

在这里插入图片描述

7.1.1三条线的折线图

import matplotlib.pyplot as plt
from pylab import mpl
# 数据
x_values = [1, 2, 3, 4, 5]
y_values1 = [10, 15, 7, 12, 8]
y_values2 = [8, 12, 6, 10, 5]
y_values3 = [5, 9, 11, 6, 13]

# 创建折线图
plt.plot(x_values, y_values1, marker='o', label='线条1')
plt.plot(x_values, y_values2, marker='o', label='线条2')
plt.plot(x_values, y_values3, marker='o', label='线条3')

# 添加标题和标签
plt.title('三线折线图示例')
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')

# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["Microsoft JhengHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 添加图例
plt.legend()

# 显示图表
plt.show()

在这里插入图片描述

7.2、散点图

散点图使用plt.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::标记点的长度。

edgecolors::颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。

plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。

**kwargs::其他参数。

7.2.1、普通散点图

import numpy as np
from matplotlib import pyplot as plt

x = np.arange(10)
y = np.random.randn(10)
plt.scatter(x, y, color='red', marker='+')
# # 绘制散点图,x 轴为数组 x,y 轴为数组 y,散点颜色为红色,散点形状为“+”

plt.show()

在这里插入图片描述

7.2.2、彩色的散点图

# 导入 Matplotlib 和 NumPy 库
import matplotlib.pyplot as plt
import numpy as np

# 创建两个 NumPy 数组 x 和 y,分别包含 [1, 2, 3, 4, 5, 6, 7, 8] 和 [1, 4, 9, 16, 7, 11, 23, 18]
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])

# 创建一个包含颜色信息的 NumPy 数组 colors,包含 ["red", "green", "black", "orange", "purple", "beige", "cyan", "magenta"]
colors = np.array(["red", "green", "black", "orange", "purple", "beige", "cyan", "magenta"])

# 使用 plt.scatter() 绘制散点图
# 参数 x 和 y 分别指定 x 和 y 坐标的数据
# 参数 c 指定散点的颜色,传入颜色数组 colors
plt.scatter(x, y, c=colors)

# 显示绘制的散点图
plt.show()

在这里插入图片描述

7.3、柱形图

我们可以使用 pyplot 中的 bar() 方法来绘制柱形图。

bar() 方法语法格式如下:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

x:浮点型数组,柱形图的 x 轴数据。

height:浮点型数组,柱形图的高度。

width:浮点型数组,柱形图的宽度。

bottom:浮点型数组,底座的 y 坐标,默认 0。

align:柱形图与 x 坐标的对齐方式,'center' 以 x 位置为中心,这是默认值。 'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'**kwargs::其他参数。

7.3.1、普通柱状图

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])

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

在这里插入图片描述

7.3.2、横着的普通柱状图

注意:恒着的柱状图只能设置高度

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])

#plt.bar(x,y)普通柱状图函数
plt.barh(x,y,height=0.5)#注意这里和普通柱状图用的函数不一样
plt.show()

在这里插入图片描述

7.3.3、单独设置每列数据的颜色

注意:竖着的柱状图只能设置宽度

import matplotlib.pyplot as plt
import numpy as np

x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])

plt.bar(x, y, color = ["#4CAF50","red","hotpink","#556B2F"],width=1)
#              颜色设置                                      宽度设置
plt.show()

在这里插入图片描述

7.4、饼图

饼图(Pie Chart)是一种常用的数据可视化图形,用来展示各类别在总体中所占的比例。

我们可以使用 pyplot 中的 pie() 方法来绘制饼图。

pie() 方法语法格式如下:

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, 
labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, 
frame=False, rotatelabels=False, *, normalize=None, data=None)[source]

x:浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。

explode:数组,表示各个扇形之间的间隔,默认值为0。

labels:列表,各个扇形的标签,默认值为 None。

colors:数组,表示各个扇形的颜色,默认值为 None。

autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。

labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。

pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。

shadow::布尔值 TrueFalse,设置饼图的阴影,默认为 False,不设置阴影。

radius::设置饼图的半径,默认为 1。

startangle::用于指定饼图的起始角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。

counterclock:布尔值,用于指定是否逆时针绘制扇形,默认为 True,即逆时针绘制,False 为顺时针。

wedgeprops :字典类型,默认值 None。用于指定扇形的属性,比如边框线颜色、边框线宽度等。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5。
textprops :字典类型,用于指定文本标签的属性,比如字体大小、字体颜色等,默认值为 None。
center :浮点类型的列表,用于指定饼图的中心位置,默认值:(0,0)。
frame :布尔类型,用于指定是否绘制饼图的边框,默认值:False。如果是 True,绘制带有表的轴框架。
rotatelabels :布尔类型,用于指定是否旋转文本标签,默认为 False。如果为 True,旋转每个 label 到指定的角度。
data:用于指定数据。如果设置了 data 参数,则可以直接使用数据框中的列作为 x、labels 等参数的值,无需再次传递。

除此之外,pie() 函数还可以返回三个参数:

	wedges:一个包含扇形对象的列表。

	texts:一个包含文本标签对象的列表。

	autotexts:一个包含自动生成的文本标签对象的列表。

7.4.1、普通饼图

import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y,
        labels=['A','B','C','D'], # 设置饼图标签
        colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色
        )
plt.title("RUNOOB Pie Test") # 设置标题
plt.show()

在这里插入图片描述

7.4.2、凸显某个数据的饼图

import matplotlib.pyplot as plt

# 数据
sizes = [15, 30, 45, 10]

# 饼图的标签
labels = ['A', 'B', 'C', 'D']

# 饼图的颜色
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']

# 突出显示第二个扇形
explode = (0, 0.1, 0, 0)
#四个值代表四个块,0.1代表离开的距离

# 绘制饼图
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
     autopct='%1.1f%%', shadow=True, startangle=90)

# sizes: 这是一个包含各部分大小比例的列表。在你的示例中,sizes = [15, 30, 45, 10] 表示饼图中的四个部分分别占据了这些比例。
#
# explode: 这是一个元组,用于控制是否突出显示某个部分。在你的代码中,explode = (0, 0.1, 0, 0) 意味着第二个部分(B)将会被拉出一些距离,以突出显示它。
#
# labels: 这是一个包含各部分标签的列表。在你的代码中,labels = ['A', 'B', 'C', 'D'] 表示每个部分对应的名称。
#
# colors: 这是一个包含各部分颜色的列表。你在代码中使用了 colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] 来为每个部分指定了不同的颜色。
#
# autopct: 这是一个格式化字符串,用于在饼图中显示百分比标签。'%1.1f%%' 表示显示小数点后一位的百分比,例如 "15.0%"。
#
# shadow: 这是一个布尔值,决定是否在饼图下方显示阴影。
#
# startangle: 这是起始角度,以度数表示,决定饼图的起始位置。在你的代码中,startangle=90 表示饼图从垂直方向开始绘制,即从顶部开始。


# 标题
plt.title("RUNOOB Pie Test")

# 显示图形
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值