matplotlib库
概念
Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
Matplotlib 可以用来绘制各种静态,动态,交互式的图表。
Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。
Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
Matplotlib 通常与 NumPy 和 SciPy(Scientific Python)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。
SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
Matplotlib 安装
我们使用 pip 工具来安装 Matplotlib 库:
pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成后,我们就可以通过 import 来导入 matplotlib 库:
import matplotlib
以下实例,我们通过导入 matplotlib 库,然后查看 matplotlib 库的版本号:
import matplotlib
print(matplotlib.__version__)
执行以上代码,输出结果如下:
3.5.1
Matplotlib Pyplot
Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。
Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。
Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。
使用的时候,我们可以使用 import 导入 pyplot 库,并设置一个别名 plt:
import matplotlib.pyplot as plt
这样我们就可以使用 plt 来引用 Pyplot 包的方法。
以下是一些常用的 pyplot 函数:
plot()
:用于绘制线图和散点图scatter()
:用于绘制散点图bar()
:用于绘制垂直条形图和水平条形图hist()
:用于绘制直方图pie()
:用于绘制饼图imshow()
:用于绘制图像subplots()
:用于创建子图
除了这些基本的函数,pyplot 还提供了很多其他的函数,例如用于设置图表属性的函数、用于添加文本和注释的函数、用于保存图表到文件的函数等等。
以下实例,我们通过两个坐标 (0,0) 到 (6,100) 来绘制一条线:
import matplotlib.pyplot as plt
import numpy as np
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])
plt.plot(xpoints, ypoints)
plt.show()
输出结果如下所示:
以上实例中我们使用了 Pyplot 的 plot() 函数, 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:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。
>>> plot(x, y) # 创建 y 中数据与 x 中对应值的二维线图,使用默认样式
>>> plot(x, y, 'bo') # 创建 y 中数据与 x 中对应值的二维线图,使用蓝色实心圈绘制
>>> plot(y) # x 的值为 0..N-1
>>> plot(y, 'r+') # 使用红色 + 号
颜色字符:'b' 蓝色,'m' 洋红色,'g' 绿色,'y' 黄色,'r' 红色,'k' 黑色,'w' 白色,'c' 青绿色,'#008000' RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。
线型参数:'‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线。
标记字符:'.' 点标记,',' 像素标记(极小点),'o' 实心圈标记,'v' 倒三角标记,'^' 上三角标记,'>' 右三角标记,'<' 左三角标记...等等。
如果我们要绘制坐标 (1, 3) 到 (8, 10) 的线,我们就需要传递两个数组 [1, 8] 和 [3, 10] 给 plot 函数:
import matplotlib.pyplot as plt
import numpy as np
xpoints = np.array([1, 8])
ypoints = np.array([3, 10])
plt.plot(xpoints, ypoints)
plt.show()
以上代码输出结果为:
如果我们只想绘制两个坐标点,而不是一条线,可以使用 o 参数,表示一个实心圈的标记:
绘制坐标 (1, 3) 和 (8, 10) 的两个点
import matplotlib.pyplot as plt
import numpy as np
xpoints = np.array([1, 8])
ypoints = np.array([3, 10])
plt.plot(xpoints, ypoints, 'o')
plt.show()
以上代码输出结果为:
我们也可以绘制任意数量的点,只需确保两个轴上的点数相同即可。
绘制一条不规则线,坐标为 (1, 3) 、 (2, 8) 、(6, 1) 、(8, 10),对应的两个数组为:[1, 2, 6, 8] 与 [3, 8, 1, 10]。
import matplotlib.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)
plt.show()
以上代码输出结果为:
如果我们不指定 x 轴上的点,则 x 会根据 y 的值来设置为 0, 1, 2, 3..N-1。
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([3, 10])
plt.plot(ypoints)
plt.show()
以上代码输出结果为:
从上图可以看出 x 的值默认设置为 [0, 1]。
再看一个有更多值的实例:
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([3, 8, 1, 10, 5, 7])
plt.plot(ypoints)
plt.show()
以上代码输出结果为:
从上图可以看出 x 的值默认设置为 [0, 1, 2, 3, 4, 5]。
以下实例我们绘制一个正弦和余弦图,在 plt.plot() 参数中包含两对 x,y 值,第一对是 x,y,这对应于正弦函数,第二对是 x,z,这对应于余弦函数。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,4*np.pi,0.1) # start,stop,step
y = np.sin(x)
z = np.cos(x)
plt.plot(x,y,x,z)
plt.show()
以上代码输出结果为:
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")
plt.ylabel("y - label")
plt.show()
显示结果如下:
标题
我们可以使用 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")
plt.ylabel("y - label")
plt.show()
显示结果如下:
说明:Matplotlib 默认情况不支持中文,我们可以使用其他的方法来解决,了解即可。
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,分别表示网格线的颜色,样式和宽度。
以下实例添加一个简单的网格线,参数使用默认值:
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()
显示结果如下:
以下实例添加一个简单的网格线,axis 参数使用 x,设置 x 轴方向显示网格线:
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(axis='x') # 设置 y 就在轴方向显示网格线
plt.show()
显示结果如下:
以下实例添加一个简单的网格线,并设置网格线的样式,格式如下:
grid(color = 'color', linestyle = 'linestyle', linewidth = number)
参数说明:
color:'b' 蓝色,'m' 洋红色,'g' 绿色,'y' 黄色,'r' 红色,'k' 黑色,'w' 白色,'c' 青绿色,'#008000' RGB 颜色符串。
linestyle:'‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线。
linewidth:设置线的宽度,可以设置一个数字。
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(color = 'r', linestyle = '--', linewidth = 0.5)
plt.show()
显示结果如下:
Matplotlib 柱形图
我们可以使用 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::其他参数。
以下实例我们简单实用 bar() 来创建一个柱形图:
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()
显示结果如下:
垂直方向的柱形图可以使用 barh() 方法来设置:
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.barh(x,y)
plt.show()
显示结果如下:
设置柱形图颜色:
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")
plt.show()
显示结果如下:
自定义各个柱形的颜色:
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"])
plt.show()
显示结果如下:
设置柱形图宽度,bar() 方法使用 width 设置,barh() 方法使用 height 设置 height
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, width = 0.1)
plt.show()
显示结果如下:
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.barh(x, y, height = 0.1)
plt.show()
显示结果如下:
Matplotlib 饼图
饼图(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::布尔值 True 或 False,设置饼图的阴影,默认为 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
:一个包含自动生成的文本标签对象的列表。
以下实例我们简单实用 pie() 来创建一个饼图:
import matplotlib.pyplot as plt
import numpy as np
y = np.array([35, 25, 25, 15])
plt.pie(y)
plt.show()
显示结果如下:
设置饼图各个扇形的标签与颜色:
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()
显示结果如下:
突出显示第二个扇形,并格式化输出百分比:
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)
# 绘制饼图
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=True, startangle=90)
# 标题
plt.title("RUNOOB Pie Test")
# 显示图形
plt.show()
我们定义了一个包含 4 个元素的列表 sizes,它表示各个类别在总体中所占的比例。然后,我们定义了一个包含 4 个元素的列表 labels,它表示各个类别的标签。接下来,我们定义了一个包含 4 个元素的列表 colors,它表示每个类别的颜色。然后,我们定义了一个包含 4 个元素的元组 explode,它用来指定是否突出某个扇形。接着,我们调用 plt.pie 函数来绘制饼图,其中传入了上述参数。最后,我们添加了一个标题,并调用 plt.show() 来显示图形。
显示结果如下:
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"], # 设置饼图颜色
explode=(0, 0.2, 0, 0), # 第二部分突出显示,值越大,距离中心越远
autopct='%.2f%%', # 格式化输出百分比
)
plt.title("RUNOOB Pie Test")
plt.show()
注意:默认情况下,第一个扇形的绘制是从 x 轴开始并逆时针移动:
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 来设置。
设置 numRows = 1,numCols = 2,就是将图表绘制成 1x2 的图片区域, 对应的坐标为:
(1, 1), (1, 2)
plotNum = 1, 表示的坐标为(1, 1), 即第一行第一列的子图。
plotNum = 2, 表示的坐标为(1, 2), 即第一行第二列的子图。
- 实例
import matplotlib.pyplot as plt
import numpy as np
#plot 1:
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])
plt.subplot(1, 2, 1)
plt.plot(xpoints,ypoints)
plt.title("plot 1")
#plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("plot 2")
plt.suptitle("RUNOOB subplot Test")
plt.show()
显示结果如下:
设置 numRows = 2,numCols = 2,就是将图表绘制成 2x2 的图片区域, 对应的坐标为:
(1, 1), (1, 2)
(2, 1), (2, 2)
plotNum = 1, 表示的坐标为(1, 1), 即第一行第一列的子图。
plotNum = 2, 表示的坐标为(1, 2), 即第一行第二列的子图。
plotNum = 3, 表示的坐标为(2, 1), 即第二行第一列的子图。
plotNum = 4, 表示的坐标为(2, 2), 即第二行第二列的子图。
- 实例
import matplotlib.pyplot as plt
import numpy as np
#plot 1:
x = np.array([0, 6])
y = np.array([0, 100])
plt.subplot(2, 2, 1)
plt.plot(x,y)
plt.title("plot 1")
#plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.subplot(2, 2, 2)
plt.plot(x,y)
plt.title("plot 2")
#plot 3:
x = np.array([1, 2, 3, 4])
y = np.array([3, 5, 7, 9])
plt.subplot(2, 2, 3)
plt.plot(x,y)
plt.title("plot 3")
#plot 4:
x = np.array([1, 2, 3, 4])
y = np.array([4, 5, 6, 7])
plt.subplot(2, 2, 4)
plt.plot(x,y)
plt.title("plot 4")
plt.suptitle("RUNOOB subplot Test")
plt.show()
显示结果如下:
实例
- 实例1
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1,11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y)
plt.show()
以上实例中,np.arange() 函数创建 x 轴上的值。y 轴上的对应值存储在另一个数组对象 y 中。 这些值使用 matplotlib 软件包的 pyplot 子模块的 plot() 函数绘制。
图形由 show() 函数显示。显示结果如下:
实例2
要显示圆来代表点,而不是上面示例中的线,请使用 ob 作为 plot() 函数中的格式字符串。
import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("x axis caption") plt.ylabel("y axis caption") plt.plot(x,y,"ob") plt.show()
显示结果如下:
实例3
使用 matplotlib 生成正弦波图。
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦曲线上点的 x 和 y 坐标
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
plt.title("sine wave form")
# 使用 matplotlib 来绘制点
plt.plot(x, y)
plt.show()
显示结果如下:
实例4:subplot() 函数在同一图中绘制不同的东西
绘制正弦和余弦值:
import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 3 * np.pi, 0.1) # 计算正弦和余弦曲线上的点的 x 和 y 坐标 y_sin = np.sin(x) y_cos = np.cos(x) plt.subplot(2, 1, 1) #建立subplot网格高为2,宽为1。激活第一个 subplot plt.plot(x, y_sin) # 绘制第一个图像 plt.title('Sine') plt.subplot(2, 1, 2) # 将第二个 subplot 激活,并绘制第二个图像 plt.plot(x, y_cos) plt.title('Cosine') plt.show()# 展示图像
显示结果如下:
实例5:bar() pyplot子模块提供bar()函数来生成条形图
以下实例生成两组 x 和 y 数组的条形图。
from matplotlib import pyplot as plt x = [5,8,10] y = [12,16,6] x2 = [6,9,11] y2 = [6,15,7] plt.bar(x, y, align = 'center') plt.bar(x2, y2, color = 'g', align = 'center') plt.title('Bar graph') plt.ylabel('Y axis') plt.xlabel('X axis') plt.show()
显示结果如下:
实例6:绘制函数在区间 [-3, 3] 上的图像。
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-3, 3, 100) # 创建x轴数据 y = 9 - x**2 # 计算对应的y轴坐标 plt.xlim(-3, 3) # 设置x轴坐标范围 plt.xticks(list(range(-3, 4))) # 设置x轴刻度 plt.ylim(0.0, 9.0) # 设置y轴坐标范围 plt.plot(x, y) # 绘制图像 ax = plt.gca() # 获取当前轴 ax.set_aspect('equal') # 设置纵横比相等 ax.grid(True) # 显示网格 plt.show()
显示结果如下:
模拟考题
考题1 单选题
matplotlib模块中提供了丰富的函数,关于函数的功能,下列选项中表达错误的是?( )
A. plot() 函数的功能是绘制图形
B. title()的功能是设置标题内容
C. show()的功能是显示绘图
D. subplot()的功能是图形叠加
答案:D
>
解析:本题考查matplotlib模块中的常用函数功能,其中,subplot()函数的功能是绘制子图,而不是图形叠加。
考题2 单选题
某用户随机生成1000个数字进行排序、计算和绘图,一定不会使用下列哪个模块?( )
A. matplotlib
B. random
C. scipy
D. wordcloud
答案:D
解析:本题考查常用模块的功能,并结合具体问题选择相应模块,较简单。
考题3 单选题
小李编写程序,制作某道选择题的选择比例图,程序如下,生成的比例图是?( )
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = "SimHei"
opt = [204, 509, 159, 213]
plt.pie(opt, labels=['A', 'B', 'C', 'D'], autopct='%1.2f%%')
plt.title("各选项的选答比例")
plt.show()
A.
B.
C.
D.
答案:D
解析:根据labels=['A', 'B', 'C', 'D']用于显选项标签,autopct='%1.2f%%'用于显示数值格式,plt.title("各选项的选答比例")用于显示标题。
考题4 单选题
高一(1)班期末4个学科成绩平均分与年级平均分对照图表。用Python程序实现时,①②两行程序代码是?( )
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df=pd.read_csv("高一(1)班成绩.csv",encoding="gbk")
x=np.array([1,2,3,4])
y=df["年级平均"]
y2=df["班级平均"]
______① ______
______② ______
plt.xticks(x+0.15,["Chinese","Math","English","Politlics"])
plt.show()
A.
① plt.plot(x,y,linewidth="3")
② plt.plot(x,y2,linewidth=”3")
B.
① plt.bar(x,y,width=0.3)
② plt.bar(x+0.3,y2,width=0.3)
C.
① plt.plot(x,y)
② plt.plot(x,y2)
D.
① plt.scatter(x,y)
② plt.scatter(x,y2)
答案:B
解析:本题绘画的是柱形图,使用bar函数,故选择B
考题5 单选题
关于matplotlib模块中函数的功能,下列描述正确的是?( )
A. bar()函数用于绘制折线图
B. plot()函数用于绘制水平柱形图
C. barh()函数用于绘制垂直柱形图
D. scatter()函数用于绘制散点图
答案:D
解析:bar()函数用于绘制垂直柱形图,plot()函数用于绘制折线形图,barh()函数用于绘制水平柱形图,因此,ABC选项均错;scatter()函数用于绘制散点图,因此,答案为D。
考题6 单选题
绘制sin(x)的图形如图所示,画线处的语句是?( )
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 30)
___________
plt.show()
A. plt.bar(x)
B. plt.scatter(x)
C. plt.plot(x, np.sin(x))
D. plt.scatter(x, np.sin(x))
答案:C
解析:绘制折线图函数是plot,参数必须有2个,第一个参数是x,第二个参数是np.sin(x)。
考题7 单选题
下列关于数据可视化的说法,最准确的是?( )
A. 数据可视化是指静态数据的可视化
B. 决定数据可视化的表现形式的是数据结构
C. 可视化探究具有关联性数据的分布关系可用散点图
D. 可视化展现时间趋势类的数据可用雷达图
答案:C
解析:利用可视化技术,可以将处于不断变化中的数据生成实时变化的可视化图表;不同的数据类型决定了可视化的表现形式;展现时间趋势类的数据可采用柱形图和折线图
考题8 单选题
有如下python程序:
import numpy as np
from matplotlib import pyplot as plt
x=np.arange(-5,5,0.1)
y=np.sin(x)
plt.show()
运行后没有报错但看不到运行结果,原因不可能是?( )
A. 缺少plt.plot()语句
B. 缺少plt.scatter()语句
C. 未正确安装第三方库
D. 电脑卡顿
答案:C
解析:未正确安装第三方库会报类似No module named 'numpy'的错误,既然没有报错,第三方库已安装
考题9 单选题
Matplotlib 是 Python 的绘图库,它不能与 NumPy 一起使用,只能与图形工具包一起使用。( )
答案:错误
解析:本题考查Matplotlib绘图库的基本功能及常用方法。
考题10 单选题
利用matplotlib绘制图形时,语句plt.show()可以省略。( )
答案:错误
解析:必须使用语句plt.show()才能进行显示图形
考题11 单选题
在Python中可以实现可视化效果,绘制数学函数图像一般要用到的库是numpy和matplotlib。( )
答案:正确
解析:NumPy(Numerical Python)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Matplotlib 可以绘制折线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。