如何使用matplotlib在Python3中绘制数据

来自菜鸟教程
跳转至:导航、​搜索

介绍

Python 非常适合处理数据。 通常,一个数据集将包含多个变量和许多实例,因此很难了解正在发生的事情。 数据可视化是帮助您识别数据模式的有用方法。

例如,假设您是一名房地产经纪人,并且您正试图了解房屋年龄与其售价之间的关系。 如果您的数据包括 1 个街区的 5 栋房屋,那么了解正在发生的事情并不难。 但是,假设您想使用整个城镇 500 所房屋的数据。 那么就很难理解年龄如何影响价格了。 通过绘制销售价格与年龄的关系来可视化数据,肯定可以揭示两者之间存在的关系。

可视化是一种以通用方式传达概念的快速简便的方法,尤其是对于那些不熟悉您的数据的人。 每当我们处理数据时,可视化通常是分析的必要部分。

我们将使用 2D 绘图库 matplotlib,它最初是由 John D. Hunter 并从那时起成为了一个非常活跃的开源开发社区项目。 它允许您生成高质量的折线图、散点图、直方图、条形图等等。 每个图都以不同的方式呈现数据,在确定数据信息最丰富的图之前,尝试不同类型的图通常很有用。 请记住,可视化是艺术与科学的结合。

鉴于可视化的重要性,本教程将介绍如何使用 matplotlib 在 Python 中绘制数据。 我们将使用一小组数据生成散点图,向绘图添加标题和图例等信息,并通过更改绘图点的外观来自定义绘图。

完成本教程后,您将能够在 Python 中绘制数据!

先决条件

对于本教程,您应该安装 Python 3,并在您的计算机上设置本地编程环境。 如果不是这种情况,您可以按照 为您的操作系统 适当的安装和设置指南进行设置。

第 1 步——导入 matplotlib

在我们开始使用 Python 之前,让我们仔细检查 matplotlib 模块是否已安装。 在命令行中,通过运行以下命令检查 matplotlib:

python -c "import matplotlib"

如果安装了 matplotlib,此命令将完成且没有错误,我们可以开始了。 如果没有,您将收到一条错误消息:

OutputTraceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'matplolib'

如果您收到错误消息,请使用 pip 下载库:

pip install matplotlib

现在已经安装了 matplotlib,我们可以在 Python 中 import 它。 首先,让我们创建将在本教程中使用的脚本:scatter.py。 然后,在我们的脚本中,让我们导入 matplotlib。 由于我们只会使用绘图模块(pyplot),因此我们在导入它时指定它。

散射.py

import matplotlib.pyplot as plt

我们通过将 .pyplot 附加到 matplotlib 的末尾来指定我们希望导入的模块。 为了更容易在我们的脚本中引用该模块,我们将其缩写为 plt。 现在,我们可以继续创建和绘制数据。

第 2 步 - 创建要绘制的数据点

在我们的 Python 脚本中,让我们创建一些要使用的数据。 我们在 2D 中工作,因此我们需要每个数据点的 X 和 Y 坐标。

为了更好地理解 matplotlib 是如何工作的,我们将把我们的数据与一个可能的现实场景联系起来。 假设我们是一家咖啡店的老板,我们对全年平均天气与冰咖啡购买总数之间的关系感兴趣。 我们的 X 变量 将是每月销售的冰咖啡的总数,我们的 Y 变量将是每个月的平均温度(华氏度)。

在我们的 Python 脚本中,我们将创建两个列表变量:X(售出的冰咖啡总量)和 Y(平均温度)。 我们各自的 lists 中的每个项目将代表每个月(1 月至 12 月)的数据。 例如,一月份的平均温度是 32 华氏度,咖啡店卖出了 590 杯冰咖啡。

散射.py

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

现在我们有了数据,我们可以开始绘图了。

第 3 步 — 绘制数据

散点图非常适合确定两个变量之间的关系,因此我们将在示例中使用这种图表类型。 要使用 matplotlib 创建散点图,我们将使用 scatter() 函数。 该函数需要两个参数,分别代表 X 和 Y 坐标值。

散射.py

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

plt.scatter(X,Y)
plt.show()

每次创建绘图时,我们还必须指定要使用 plt.show() 显示绘图。

在继续之前,让我们检查一下我们的脚本是否正常工作。 保存脚本并通过命令行运行它:

python scatter.py

如果一切顺利,应该会启动一个显示绘图的窗口,如下所示:

这个窗口非常适合查看数据; 它是交互式的,包括多种功能,例如悬停以显示标签和坐标、放大或缩小以及保存。

第 4 步 — 添加标题和标签

现在我们知道我们的脚本工作正常,我们可以开始向我们的情节添加信息。 为了清楚我们的数据代表什么,让我们为每个轴添加标题和标签。

我们将从添加标题开始。 我们在脚本中的 plt.show() 行之前添加标题。

散射.py

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

plt.scatter(X,Y)

plt.title('Relationship Between Temperature and Iced Coffee Sales')

plt.show()

接下来,为 plt.title 线正下方的轴添加标签:

散射.py

...
plt.xlabel('Cups of Iced Coffee Sold')
plt.ylabel('Temperature in Fahrenheit')
...

如果我们保存我们的脚本并再次运行它,我们现在应该有一个更新的绘图,它的信息量更大。 我们更新的情节应该是这样的:

第 5 步 - 自定义绘图

我们使用的每个数据集都是独一无二的,能够自定义我们希望如何显示我们的信息非常重要。 记住可视化也是一门艺术,所以要发挥创意! matplotlib 包含许多自定义功能,例如不同的颜色、点符号和大小。 根据我们的需要,我们可能想要使用不同的比例,为我们的轴使用不同的范围。 我们可以通过为轴指定新范围来更改默认参数,如下所示:

散射.py

import matplotlib.pyplot as plt

X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

plt.scatter(X,Y)

plt.xlim(0,1000)
plt.ylim(0,100)

plt.title('Relationship Between Temperature and Iced Coffee Sales')

plt.show()
...

原始图中的点看起来确实有点小,蓝色可能不是我们想要的颜色。 也许我们想要三角形而不是圆形作为我们的点。 如果我们想改变点的实际颜色/大小/形状,我们必须在最初的 plt.scatter() 调用中进行这些更改。 我们将更改以下参数:

  • s:点的大小,默认 = 20
  • c:颜色、序列或颜色序列,默认 = 'b'
  • marker:点符号,默认 = 'o'

可能的标记包括许多不同的形状,例如菱形、六边形、星形等。 颜色选择包括但不限于蓝色、绿色、红色和洋红色。 也可以为颜色提供 HTML 十六进制字符串。 有关可能的 markerscolors 的完整列表,请参阅 matplotlib 的文档。

为了使我们的绘图更易于阅读,让我们将点的大小增加三倍(s=60),将颜色更改为红色(c='r'),并将符号更改为三角形([ X160X])。 我们将修改 plt.scatter() 函数:

plt.scatter(X, Y, s=60, c='red', marker='^')

在运行我们更新的脚本之前,我们可以仔细检查我们的代码是否正确。 自定义绘图的更新脚本应如下所示:

散射.py

import matplotlib.pyplot as plt


X = [590,540,740,130,810,300,320,230,470,620,770,250]
Y = [32,36,39,52,61,72,77,75,68,57,48,48]

#scatter plot
plt.scatter(X, Y, s=60, c='red', marker='^')

#change axes ranges
plt.xlim(0,1000)
plt.ylim(0,100)

#add title
plt.title('Relationship Between Temperature and Iced Coffee Sales')

#add x and y labels
plt.xlabel('Cups of Iced Coffee Sold')
plt.ylabel('Temperature in Fahrenheit')

#show plot
plt.show()

在继续第 6 步之前,不要忘记保存脚本。

第 6 步 — 保存绘图

现在我们已经完成了我们的代码,让我们运行它来查看我们新的自定义绘图。

python scatter.py

现在应该打开一个窗口,显示我们的绘图:

接下来,通过单击保存按钮保存绘图,该按钮位于底部工具栏上的磁盘图标。 请记住,图像将保存为 PNG 而不是交互式图形。 您现在有了自己的自定义散点图,恭喜!

结论

在本教程中,您学习了如何在 Python 中使用 matplotlib 绘制数据。 您现在可以可视化数据并自定义绘图。

要继续使用 matplotlib 练习,您可以按照我们的指南“如何使用 matplotlib 和 Python 3 绘制词频”。