原标题:零基础用 Python 画图表,让你的论文高一个逼格

曾经我在高中的时候有一篇数学探索的小作业,其中我需要画出一张比较复杂的函数图。由于 X 和 Y 的坐标轴标签都需要一定的自定义,所以微软 Office 自带的画图工具自然无法满足我的要求。经过一段时间的寻找,我终于找到了最适合自己的工具:那就是用 Python。

用 matplotlib 可以画出这样的图片,这张图的源代码请参考文末

其实,「用 Python」这个说法比较笼统,我们在这篇文章其实是要学习 Python 的一个模组:matplotlib的简单使用方法。

使用 matplotlib 这个模组,我们就可以摆脱微软 Office 的传统画图方法。以此带来的新画图方法就是通过数学式的方法来画图。更加有用的是,我们可以方便地自定义图表,画出更好看、更美观的效果。

诚然,使用 matplotlib 画图离不开使用编程语言。但是请务必不要害怕接触编程:画出一个简单的图只需要几行非常简单并且易于理解的代码。画出复杂一些的图片也会有一些常识和修正,不过请放心,本篇文章将不会涉及任何高级编程知识,零基础也能上手。

安装必要的软件

本篇文这个章中,我们涉及到的软件只有一个免费软件,那就是 Anaconda。你可以在这个地址https://www.anaconda.com/download/上下载到 Anaconda,软件完全免费,并支持 Windows 和 macOS。如果你有安装 Visual Studio,你可以直接在 Visual Studio 内下载并安装 Anaconda。通常我们会选择 Python 3.6 版本。

安装完成之后,你会在开始菜单中的 Anaconda 文件夹中看到 Spyder 这个应用,我们打开这个应用,迎面而来的就是一个代码编辑器,我们就要在这个代码编辑器内写出所有画图的代码。

编写代码:初步了解 matplotlib

打开 Spyder,我们就会看到屏幕的左边是代码编辑区域,屏幕的左下角则是输出区域。在这个步骤,我们将主要操作屏幕的左边,也就是代码编辑区域,来输入我们画图用到的代码。

导入模组

编辑代码的第一步,就是告诉我们要写的程序要包括什么模组。简单来说我们就是要告诉程序,我们要在程序内包括什么功能。首先我们输入以下代码:

import matplotlib.pyplot as pltimport numpy as np

这两行代码中, import 的意思就是,我们要导入两个模组,一个叫做 matplotlib.pyplot,还有一个叫做 numpy。matplotlib.pyplot 主要负责画图功能。numpy 则负责高级数学的功能,比如解释正弦、余弦函数,Python 本身是不能通过一句简单的函数来计算某个角度的正弦的,需要外部库来支持。

在这里,as 的意思是定义一个别名。在之后的程序中,当我们需要召唤 matplotlib.pyplot 这个程序的时候,我们只需要打出 plt 即可,而无需再打出原来这么一长串。同理,numpy 在这里也被取了 np 的别名。

开始编写

在以上我们做完程序的铺垫之后,我们就可以正式开始编写画图的代码了。首先,我们要定义 X 的域,添加以下代码表示:

x = np.linspace(-1, 1, 256)

在这行代码中,我们定义了 X 轴的最小值和最大值,括号中第一个数字 -1 是 X 轴的最小值,括号中的第二个数字 1 则是 X 的最大值。256 则是取样密度,这个参数不用改变。

目前这部分很简单,但是 matplotlib 强大的地方在于可以利用其他的常量来定义边界,请看下面的例子:

x = np.linspace(-np.pi, np.pi, 256)

在这个例子中,这行代码会替换上面那行代码,我们利用了 numpy 模组,使 X 轴的最小值变为 -π,而最大值变成了 π,从而允许我们更直观地画出三角函数的图像。

接下来我们开始定义 Y 轴,假如我们想画出 sin(x) 的图像,我们只需要接着输入:

y = np.sin(x)

在这里,sin 的前面被加了 np.,是因为 Python 本身不支持正弦函数运算,所以需要注明使用 np 模组才能使用。

又或者,我们想画出平方的图像,我们可以替换上面的代码为:

y = x**2

Python 的四则运算符分别为 +、-、*、/。平方的运算符则为 **,这些运算符是 Python 本身支持的,不需要像前面一样注明使用 np 模组。关于其他需要使用到 numpy 的运算,比如 log、余弦、e 等等,敬请参考 numpy 官方文档https://docs.scipy.org/doc/numpy/index.html。

X 和 Y 的定义完成了,接下来,我们开始指令 matplotlib 来画出图像。

画出图像

这步非常简单,只需要在代码的最后添加一行代码:

plt.plot(x, y)

最后,点击工具栏上的绿色箭头,就可以运行这段代码。运行完毕之后,你就可以在右下角的窗口上看到你画出的图像。右键点击图像,即可保存。

进阶使用:了解 matplotlib 的强大

自定义坐标轴

现在我们来开始介绍 matplotlib 最强大的地方:自定义。为什么我们要使用 matplotlib 来画图?就是为了能够自定义图表中的一些元素。在上边的例子中,我们使用了 np.sin() 函数来画出正弦图像。但是,matplotlib 默认为我们使用了数字作为 X 轴的坐标轴,这显然不是最理想的标记方法,那么我们接下来学习怎样自定义 X 轴坐标轴。在 plt.plot(x, y) 前加入以下代码。

plt.xticks([-np.pi, 0, np.pi], ['-π', '0', 'π'])

对于这行代码,可能有一些人会看不明白,别着急,我们一一解释。

首先我们看第一个方括号内的数字 [-np.pi, 0, np.pi],这三个数字表示你想在坐标轴内显示的三个数字的真实数值,你可以改变这些数字,但是每个数字必须要以逗号分开,依顺序填写,在这里我们使用了 -π、0 和 π。第二个方括号中,['-π', '0', 'π'],这些值表示了真实显示在图片上的坐标轴文字,这些文字也必须要和第一个方括号内的数字相对应,并且每个值都要在引号内填写(单双引号均可)。

如果你不需要用文字表达而仅仅需要使用简单的数字,则不需要填写第二个方括号。这里我们用 Y 轴举例:

plt.yticks([-1, -0.5, 0, 0.5, 1])

这样,Y 轴就只会显示方括号内的五个数字。

添加标题

添加标题非常简单,只需要加入一行代码,确保代码在 import 语句以下,plt.plot(x, y) 以上:

plt.title("在这里添加你的标题")

添加坐标轴文本

添加坐标轴文本同样也非常简单,加入以下代码,确保代码在 import 语句以下,plt.plot(x, y) 以上:

plt.xlabel("X 坐标轴文本")plt.ylabel("Y 坐标轴文本")

画出多个函数

如果需要画出多个函数,只需要再定义一个方程,并添加一行 plt.plot 命令即可。复制以下代码到你的编辑器:

import matplotlib.pyplot as pltimport numpy as npx = np.linspace(-np.pi, np.pi, 256)y1 = np.sin(x)y2 = x**2plt.plot(x, y1)plt.plot(x, y2)

设置图像风格

matplotlib 还有一个最强大的功能是自定义图像风格:想画出虚线、虚点线、点线,都没问题。我们可以将上面的 plt.plot(x, y1) 和 plt.plot(x, y2) 替换为如下代码:

plt.plot(x, y1, 'b--')plt.plot(x, y2, 'r-.')

在这两行代码中,我们可以看到 plt.plot 多了第三个参数,第三个参数定义了图像的风格和颜色,如下图所示。

上图中我们可以看到,正弦函数是蓝色,X 平方函数则是红色,这些颜色的配置归功于第三个参数中的第一个字符:b 和 r,分别表示 blue 和 red。接下来的字符则表示线条的风格,-- 和 -. 分别表示虚线和虚点线。需要注意的是,这里没有严格的顺序,所以即使你写成 --b,也是没有问题的。

matplotlib 中还有更多的线条风格和颜色,你可以在这个 官方文档https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html中查看。

设置图像格式以及大小

可能大家已经注意到了:上面我们输出的函数图像,其实是非常不清晰的。那么现在我们来调整图像。确保以下代码位置在 import 语句下第一行。

plt.figure(figsize=(3, 5), dpi=300)

大家应该已经注意到了,plt.figure() 内多了两个参数。其中,figsize 的值定义了图像的大小,第一个数字代表宽度为三英尺,第二个数字代表宽度为五英尺。dpi 的值则很明显,代表了图像的 DPI。这些值您可以根据自己的实际需求进行修改。

后记:为什么要用 matplotlib?

看完这篇文章,可能会有读者问:「为什么我要费劲去写代码然后画出这些不起眼的图呢?」。其实说到底,这是「学习成本」的问题。对我个人来说,花这些时间学习 matplotlib,对我的未来来说是很有帮助的:对于即将上大学的我,必然会在未来方便我论文的撰写以及图表的绘制。

可能也有一些读者会问:为什么不用其他的软件?一方面是 matplotlib 自定义功能强。另一方面,虽然其他的软件拥有图形化的界面来简化画图的过程,但是我更喜欢用代码来解决问题,算是我个人的小癖好之一。

请在这里https://pastebin.com/HRzS58uW查看第一张图的源代码。

更多 matplotlib 的例子

来源:少数派

原文链接:https://sspai.com/post/43060?utm_source=tuicool&utm_medium=referral返回搜狐,查看更多

责任编辑:

用python绘制柱状图标题-零基础用 Python 画图表,让你的论文高一个逼格相关推荐

  1. 有c语言基础学python容易吗_零基础学Python之前需要学c语言吗

    Python本身是比较适合作为入门编程语言来学习的,一方面Python的语法结构比较简单清晰,实验也相对比较容易完成,这会逐渐增强初学者的学习信心,另一方面Python属于全场景编程语言,未来在很多领 ...

  2. python是什么软件-零基础入门Python怎么学习?老男孩python用什么软件

    在培训学习Python时,怎么才能学好Python?随着Python技术的发展,越来越多的人开始学习Python编程语言,那么零基础入门Python该怎么学习? 1.要养成良好的代码编写习惯,注重细节 ...

  3. 0基础学好python难不难_零基础学习Python难不难?Python有什么优势?

    原标题:零基础学习Python难不难?Python有什么优势? Python是一种计算机程序设计语言.首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个 ...

  4. 零基础学python多久可以工作-零基础学习python,要多久才可以学好并且找到工作?...

    原标题:零基础学习python,要多久才可以学好并且找到工作? 零基础的你想学习python肯定很关注学习python的最短时间是多久,怎样才能快速学习python等问题,今天就为大家详细地回答一下这 ...

  5. python爬虫教程入门-零基础入门Python爬虫不知道怎么学?这是入门的完整教程

    原标题:零基础入门Python爬虫不知道怎么学?这是入门的完整教程 这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑 ...

  6. 0基础学python看什么书-零基础学python编程需要看什么书?

    原标题:零基础学python编程需要看什么书? 随着互联网迅速发展,python也呈现出水涨船高的态势.近年来,python在编程语言中一直名列前茅.编程初学者纷纷选择Python作为第一语言.Pyt ...

  7. 零基础学python看什么书-零基础学python推荐几本python学习的书籍

    原标题:零基础学python推荐几本python学习的书籍 无论是否已经学习了一些其他的编程语言,在开始学习Python时,都应该先从Python的基本概念学起,这样在之后的编程实战中就能尽量减少因为 ...

  8. python数据参数_零基础学习python数据分析——函数的参数

    原标题:零基础学习python数据分析--函数的参数 上一节课中我们讲了python的函数定义,Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数 ...

  9. 零基础学python全彩版答案-零基础学Python(全彩版)

    商品描述: 本店出售的图书均是正版二手书,有一些笔记划线,基本是六-九品新左右,基本都没有光盘.介意者请提前咨询客服.本店所有书籍,因买家导致退货退款的,发出运费参照不包邮运费模板由买家承担.如果签收 ...

最新文章

  1. 如何快速优雅的在CSDN输入公式?
  2. Python中OpenCV2. VS. CV1
  3. SAP UI5 的 TypeScript 实践
  4. 指定tensorflow运行的GPU或CPU设备
  5. Comparable和Comparator区别是什么?差点吃屎
  6. LwIP之协议栈接口
  7. 中移4G模块-ML302-OpenCpu开发-服务器搭建
  8. R语言-plyr包中的函数
  9. python如何写生日快乐图片_Python 生活第一周母校生日快乐
  10. Opencv python之车辆识别项目(附代码)
  11. 支付网关 | 京东618、双11用户支付的核心承载系统上篇
  12. 计算机在英语翻译上的运用,有道如何在网页上翻译一句话,有道网页上的字翻译怎么用...
  13. openpyxl生成xslx-动态存储数据
  14. 实现 ResponseBodyAdvice 定制化JSON 返回字段
  15. redis分布式锁的原子保证
  16. 英语的加减乘除怎么计算机,用英语表示加减乘除法的用法
  17. 北京2008年地铁规划收集
  18. Istio服务网格进阶④:Istio服务网格核心资源YAML编排文件配置清单
  19. 台达,AS228T,plc程序模板和触摸屏程序模板,目前6个总线伺服,采用CANOPEN,适用于运动轴控制,程序可以在自动的时候暂停进行手动控制
  20. SWAPIDC去云中心版本附带插件

热门文章

  1. SQL数据分析概览——Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto+druid
  2. 对javascript闭包的理解
  3. 题解 【NOIP2016】组合数问题
  4. 查看端口被哪个进程占用
  5. 团队-科学计算器-模块测试过程
  6. poj 1741 Tree
  7. RecyclerView android:layout_width=match_parent无效
  8. SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库)
  9. 猜数字游戏_FLEX版
  10. GC分析工具使用-gceacy分析堆栈