使用figsize调整Matplotlib中的图和子图大小的方法

841 阅读5分钟

今天在这篇文章中,我们将学习使用Matplotlib调整图和子图的大小。我们都知道,对于数据可视化 的目的,Python是最好的选择。它有一套模块,几乎可以在每个系统上运行。因此,在这个小教程中,我们的任务是学习有关的知识。让我们开始吧!

绘图的基础知识

绘图基本上意味着为一个给定的数据框架形成各种图形可视化。它有多种类型:

  1. 柱状图。每个数据项的二维表示,相对于X-Y尺度上的一些实体。
  2. 散点图。绘制代表x-y轴上的数据点的小点。
  3. 柱状图
  4. 饼状图等

还有其他各种技术在数据科学和计算任务中使用。

要了解更多关于绘图的知识,请查看Matplotlib中的绘图教程。

什么是子图?

子图是一种数据可视化的分布式技术,在一个图中包含几个图。这使得我们的演示更加美观,并且容易理解各种数据点与不同实体的分布。

用于绘图的Python设置

  1. 编程环境。Python 3.8.5
  2. IDE。Jupyter notebooks
  3. 库/包。Matplotlib, Numpy

在Matplotlib中创建可调整大小的图

让我们跳到创建几个图,以后可以调整大小。

代码

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

输出

Sine Wave Plot

正弦波图

这只是一个简单的正弦波图,显示了时间线性增加时的振幅运动。现在,我们将看到使事情更简单的子图

为了进行练习,我留下了cos(x)和tan(x)的代码。请看,这些代码是否有效。

cos(x)的代码

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

输出

Plot For Cosx

绘制cos(x)图

tan(x)的代码。

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

输出。

Plot For Tanx

绘制tan(x)图

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

输出

A Simple Bar Plot

一个简单的条形图

解释一下

  1. 在这段代码中,前两行代码导入了 pyplot 和 random 库。
  2. 在第二行代码中,我们使用 figure() 函数。在这个函数中,figsize参数是一个关于绘图布局的高度和宽度的元组。
  3. 这可以帮助我们决定我们要给多少高度。
  4. 随机函数在两个列表x、y中分别插入1到10的随机值。
  5. 然后调用bar()函数来创建条形图。

在Matplotlib中调整图的大小

这个库是用来在单轴或多轴上创建子图的。我们可以在它上面实现各种条形图。它有助于为统计数据的展示创建通用的布局。

使用figsize

代码示例

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

输出

A Bar Subplot

一个条形子图

解释

  1. 前两行是模块的导入语句。
  2. 然后我们定义了两个图元来表示男性和女性的分布值。
  3. 为了划分图表,标准分值为menStd和womenStd。
  4. 然后每个条形图的宽度被设置为0.35。
  5. 我们创建plt.subplot()函数的两个对象fig和ax
  6. 这个函数有一个参数figsize。它需要一个由两个元素组成的元组,描述了显示图像的分辨率**(宽度、高度)**。
  7. 然后我们分配两个变量p1和p2,并使用ax实例调用bar()方法。
  8. 然后,最后只需将标签分配给x-y轴,最后绘制。

使用子图进行分类绘图

分类数据--带标签的信息绘制也可以使用matplotlib的subplot。我们可以使用 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 Of Various Types 1

各种类型的子图

解释一下

  1. 首先,我们创建一个包含所有键值对的字典。
  2. 然后我们创建一个包含所有键的列表和一个包含所有值的独立列表。
  3. 之后,创建一个subplots()类的简单实例。
  4. 为了写出必要的参数,我们首先给出1来声明行的数量。3来声明列的数量。因此,在一列上有三个图画
  5. 这里,figsize等于(9,3)。
  6. 然后,我们把每个情节放在轴上使用列表功能:
    1. ax[0] = 条形图
    2. ax[1] = 散点图
    3. ax[2] = 一个简单的线图
  7. 这些显示了一个动物园中所有动物的存在。

结论

所以,在这里我们学到了如何使用子图使事情变得更简单。使用figsize 参数可以为数据的可视化节省空间和时间。所以,我希望这是有帮助的。更多关于这个主题的内容将陆续推出。在那之前,请继续编写代码。