今天在本文中,我们将研究使用Matplotlib调整图和子图的大小。我们都知道,出于数据可视化的目的,Python 是最好的选择。它有一组几乎可以在每个系统上运行的模块。因此,在这个小教程中,我们的任务是温习相关知识。我们开工吧!
绘图基础知识
绘图基本上意味着针对给定数据框形成各种图形可视化。里面有多种类型:
- 条形图:每个数据项相对于 xy 尺度上某个实体的 2D 表示。
- 散点图:绘制代表 xy 轴上数据点的小点。
- 直方图
- 饼图等
数据科学和计算任务中还使用了各种其他技术。
要了解有关绘图的更多信息,请查看有关在 Matplotlib 中绘图的教程。
什么是次要情节?
子图是一种数据可视化的分布式技术,其中多个图包含在一个图表中。这使我们的演示更加美观,并且易于理解各种数据点以及不同实体的分布。
阅读有关Matplotlib 中子图的更多信息。
用于绘图的 Python 设置
- 编程环境:Python 3.8.5
- IDE:Jupyter 笔记本
- 库/包:Matplotlib、Numpy
在 Matplotlib 中创建要调整大小的绘图
让我们开始创建一些稍后可以调整大小的图。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from matplotlib import pyplot as plt import numpy as np x = np.linspace( 0 , 10 , 100 ) y = 4 + 2 * np.sin( 2 * x) fig, axs = plt.subplots() plt.xlabel( "time" ) plt.ylabel( "amplitude" ) plt.title( "y = sin(x)" ) axs.plot(x, y, linewidth = 3.0 ) axs. set (xlim = ( 0 , 8 ), xticks = np.arange( 1 , 8 ), ylim = ( 0 , 8 ), yticks = np.arange( 1 , 8 )) plt.show() |
输出:
这只是一个简单的正弦波图,显示了时间线性增加时幅度的变化。现在,我们将看到使事情变得更简单的子图。
为了练习,我留下了 cos(x) 和 tan(x) 的代码。看看代码是否有效。
cos(x) 的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from matplotlib import pyplot as plt import numpy as np x = np.linspace( 0 , 10 , 100 ) y = 4 + 2 * np.cos( 2 * x) fig, axs = plt.subplots() plt.xlabel( "time" ) plt.ylabel( "amplitude" ) plt.title( "y = cos(x)" ) axs.plot(x, y, linewidth = 3.0 ) axs. set (xlim = ( 0 , 8 ), xticks = np.arange( 1 , 8 ), ylim = ( 0 , 8 ), yticks = np.arange( 1 , 8 )) plt.show() |
输出:
tan(x) 的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from matplotlib import pyplot as plt import numpy as np x = np.linspace( 0 , 10 , 100 ) y = 4 + 2 * np.tan( 2 * x) fig, axs = plt.subplots() plt.xlabel( "time" ) plt.ylabel( "amplitude" ) plt.title( "y = tan(x)" ) axs.plot(x, y, linewidth = 3.0 ) axs. set (xlim = ( 0 , 8 ), xticks = np.arange( 1 , 8 ), ylim = ( 0 , 8 ), yticks = np.arange( 1 , 8 )) plt.show() |
输出:
Matplotlib 中的图形具有预定义的尺寸布局。因此,当我们需要改变它们的大小时,绘图类有一个图形函数。该函数负责使视图与屏幕更加相关。用户拥有编辑绘图尺寸的完全权利。我们通过一个例子来理解这一点:
代码:
import random from matplotlib import pyplot as plt plt.figure(figsize = ( 5 , 5 )) x = [] y = [] plt.xlabel( "X values" ) plt.ylabel( "Y values" ) plt.title( "A simple graph" ) N = 50 for i in range (N): x.append(random.randint( 0 , 10 )) y.append(random.randint( 0 , 10 )) plt.bar(x, y, color = "pink" ) plt.show() |
输出:
解释:
- 在此代码中,前两行代码导入 pyplot 和随机库。
- 在第二行代码中,我们使用figure()函数。其中,figsize 参数采用绘图布局的高度和宽度的元组。
- 这有助于我们决定给予多少高度。
- 随机函数在两个列表 x、y 中的每一个中插入 1 到 10 范围内的随机值。
- 然后调用 bar() 函数来创建条形图。
在 Matplotlib 中调整绘图大小
该库用于在单轴或多轴上创建子图。我们可以在其上实现各种条形图。它有助于创建统计数据呈现的通用布局。
使用无花果大小
代码示例:
from matplotlib import pyplot as plt import numpy as np N = 5 menMeans = ( 20 , 35 , 30 , 35 , - 27 ) womenMeans = ( 25 , 32 , 34 , 20 , - 25 ) menStd = ( 2 , 3 , 4 , 1 , 2 ) womenStd = ( 3 , 5 , 2 , 3 , 3 ) ind = np.arange(N) # the x locations for the groups width = 0.35 # the width of the bars: can also be len(x) sequence fig, ax = plt.subplots(figsize = ( 6 , 6 )) p1 = ax.bar(ind, menMeans, width, yerr = menStd, label = 'Men' ) p2 = ax.bar(ind, womenMeans, width, bottom = menMeans, yerr = womenStd, label = 'Women' ) ax.axhline( 0 , color = 'grey' , linewidth = 0.8 ) ax.set_ylabel( 'Scores' ) ax.set_title( 'Scores by group and gender' ) ax.legend() # Label with label_type 'center' instead of the default 'edge' ax.bar_label(p1, label_type = 'center' ) ax.bar_label(p2, label_type = 'center' ) ax.bar_label(p2) plt.show() |
输出:
解释:
- 前两行是模块的导入语句。
- 然后我们为男性和女性分布值定义两个元组。
- 为了划分图表,标准划分是 menStd 和 WomenStd。
- 然后将每个条形的宽度设置为 0.35。
- 我们通过plt.subplot()函数创建两个对象fig和ax。
- 该函数有一个参数Figsize。它采用两个元素的元组来描述显示图像的分辨率(宽度、高度)。
- 然后我们分配两个变量 p1 和 p2 并使用ax实例调用 bar() 方法。
- 最后将标签分配给 xy 轴并绘制它们。
使用子图进行分类绘图
分类数据 – 带标签的信息也可以使用 matplotlib 的子图进行绘制。我们可以使用figsize
这里的参数将图分成许多部分。
例子:
from matplotlib import pyplot as plt data = { 'tiger' : 10 , 'giraffe' : 15 , 'lion' : 5 , 'deers' : 20 } names = list (data.keys()) values = list (data.values()) fig, axs = plt.subplots( 1 , 3 , figsize = ( 9 , 3 ), sharey = True ) axs[ 0 ].bar(names, values) axs[ 1 ].scatter(names, values) axs[ 2 ].plot(names, values) fig.suptitle( 'Categorical Plotting of presence of all the animals in a zoo' ) |
输出:
解释:
- 首先,我们创建一个包含所有键值对的字典。
- 然后我们创建所有键的列表和所有值的单独列表。
- 之后创建 subplots() 类的一个简单实例。
- 为了编写必要的参数,我们首先给出 1 来声明行数。3 声明列数。因此,单列上有三个图
- 这里,figsize 等于 (9, 3)。
- 然后我们将每个图放置在轴上。使用列表功能,
- ax[0] = 条形图
- ax[1] = 散点图
- ax[2] = 简单的折线图
- 这些显示了动物园中所有动物的存在。
结论
因此,在这里我们学习了如何使用子图使事情变得更容易。使用Figsize参数可以节省数据可视化的空间和时间。所以,我希望这会有所帮助。关于这个话题还有更多内容。直到那时继续编码。