列表到图形:如何在Python中将列表表示为图形

让我开始向您显示以下图形:

条形图示例

看起来很熟悉,不是吗? 这称为条形图 。 我们通常使用不同的应用程序(例如Microsoft Excel和Microsoft Word)绘制它们。

如果我们想对图形创建过程进行更多控制,那么以编程方式创建此类图形将是最佳选择。

在本教程中,我将向您展示如何使用Python创建条形图。 准备?

我们需要什么模块?

为了执行绘制条形图的任务,我们将主要需要两个模块: Image模块和ImageDraw模块,这两个模块都将从Python Imaging Library(PIL)导入。 Image模块将用于加载图像,而ImageDraw模块将用于创建2D图形(即画一条线)。

提到PIL,让我向您展示如何安装它。 但我将向您展示如何安装枕头 。 原因是PIL的最新版本PIL 1.1.7于2009年发布,仅支持Python 1.5.2–2.7。 因此,它不支持Python 3.X,而且恐怕自从PIL项目的上一次提交是在2011年以来,它的开发就已经停止了。

Pillow派上了用场,因为它分叉了PIL存储库并添加了Python 3.X支持。 因此,为了使用Python 3.X的读者,我将使用Pillow。 但是,如果您使用的是以前的Python版本,则使用Pillow不会造成伤害。

安装枕

由于我当前正在Mac OS X El Capitan系统上编写本教程,因此本节中有关安装Pillow的步骤适用于Mac OS X用户,但是您可以按照其他操作系统的文档中的说明进行操作。

在Mac上安装Pillow的一种简单方法是通过pip ,可以通过在终端上键入以下简单命令来进行安装:

$ sudo easy_install pip

此时,只需键入以下内容即可安装枕头:

$ sudo pip install pillow

建立程序

现在,让我们逐步介绍该程序的构建块。 我们需要的第一件事是空白图像,我们将在其上绘制条形图。 您可以下载空白图像

现在让我们阅读此空白图像并绘制它。 我们可以这样做,如下所示:

from PIL import Image, ImageDraw
img = Image.open('blank.png')
draw_img = ImageDraw.Draw(img)

由于我们要绘制条形图,因此需要一些数据。 为此,我们可以使用list 。 因此,我们的数据(列表)可以如下所示:

data = ['4','5','87','1','44','83','93','2','54','84','100','64']

此时,我们所需要做的就是绘制条形图。 我们将在图上看到的条形图视为线。 因此,我们将使用ImageDraw模块的line()方法。

我将向您显示执行绘制条形图任务的代码,然后我将对其进行解释:

for i in data:
    x = x + 30  
    y = 200 - int(i) 
    draw_img.line((x,200,x,y), width=10, fill=(255,0,0,255))

如您所见,我们遍历列表并使用列表中的数据绘制条形图。 x = x + 30为我们提供了x轴列表中每个数据点之间的所需空间。 在继续之前,我想提醒您,图像上的(0,0)点是轴的左上角 。 因此,就像在图形上标记点坐标时,将线颠倒到我们习惯的正常方式绘制。

如果我们跳到上一个脚本部分的最后一行,我们可以按如下方式阅读此部分draw_img.line((x,200, x,y) :从点(x,200)到点(x,y) 。因此,如果我们从第一个数据点4 ,则线将从(34,200)绘制到(34,196) 。因此,当我在一段时间(34,196)您显示输出时,x轴将好像这就是我们通常习惯的(从(0,0)的左下角开始)。这里的技巧是使用y = 200如您所见,我们将始终在y = 200绘制一条线对于所有数据点,这将使我们对我们在查看结果时在图形上绘制点的方式印象深刻。

width表示线条的宽度(厚度),而fill=(255,0,0,255)表示线条的颜色。 也就是说, RGBA颜色(RGB颜色的扩展,其中Alpha通道代表不透明度)。

最后,我们可以使用以下语句查看图像: img.show()

放在一起

既然我们已经涵盖了程序的构建块,那么让我们将所有内容放在一起,看看脚本的外观如何:

from PIL import Image, ImageDraw
img = Image.open('blank.png')
draw_img = ImageDraw.Draw(img)

data = ['4','5','87','1','44','83','93','2','54','84','100','64'] 
x = 0

for i in data:
    x = x + 30  
    y = 200 - int(i) 
    draw_img.line((x,200,x,y), width=10, fill=(255,0,0,255))
        
img.show()

输出量

现在是有趣的部分,上面的脚本的结果。 如果运行该程序,则应该具有与以下内容相似的内容:

从列表中查看图形

我已在此快照中裁剪了图像的顶部; 它应该在原始输出中看起来更大。

结论

正如我们从本教程中看到的那样,为了获得对某些常规任务的更多控制,例如使用某种编程语言(例如Python)来绘制一些数据的图形,将是一种方法。

但是,我们不需要总是从头开始执行此类任务; 相反,我们可以从用户定义的库(例如本教程中的Pillow)中受益。 使用这样的库使我们可以轻松地绘制条形图,而使用Python则使我们可以控制和灵活地使用一些技巧以所需的方式输出图形。

翻译自: https://code.tutsplus.com/tutorials/list-to-graph-how-to-represent-your-list-as-a-graph-in-python--cms-26472

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值