| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Matplotlib 学习笔记 -> 正文阅读 |
|
[Python知识库]Matplotlib 学习笔记 |
????????Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。 0 准备工作????????先安装
1 基础入门1.1 简单绘图????????使用NumPy库中的
????????ndarray对象用作图的x轴上的值。通过以下语句获得在y轴上显示的x中的角度的相应正弦值
????????使用
????????可以设置绘图标题以及x和y轴的标签。
????????
完整代码:
????????由上面的代码,我们可以看到使用 ????????在面向对象的界面中,Pyplot仅用于一些功能,如图形创建,用户显式创建和跟踪图形和轴对象。在此级别,用户使用Pyplot创建图形,通过这些图形,可以创建一个或多个轴对象。然后,这些轴对象用于大多数绘图操作。对Matplotlib Axes类的详细介绍,请阅读:https://www.yiibai.com/matplotlib/matplotlib_axes_class.html ????????首先,创建一个提供空画布的图形实例。
????????将轴添加到图形中。
????????设置x和y轴的标签以及标题
????????调用axes对象的plot()方法。
完整代码:
????????温馨提示: 在绘图代码里经常看到,有用plt.,有用ax.,至于怎么选用,我认为简单又适合自己的才是最好的,如果有多个子图,并每个子图都需要修饰,ax会比plt更方便,反之则使用plt就够用了。 1.2 图和子图????????我们不能在一个空白的figure上绘图,必须要创建一个或更多的subplots(子图),用add_subplot:
????????这行代码的意思是,figure是2x2(这样一共有4幅图),而且我们选中4个subplots(数字从1到4)中的第1个。如果要创建另外两个子图,可以输入:
????????我们可以直接在空白的subplot上绘图,直接在对应的AxesSubplot对象上调用方法即可,如果输入
????????因为创建一个带有多个subplot的figure是很常见的操作,所以matplotlib添加了一个方法,plt.subplots,来简化这个过程。这个方法会创建一个新的figure,并返回一个numpy数组,其中包含创建的subplot对象:
????????这个操作是很有用的。axes能用一个二位数据来索引,例如,axes[0, 1]。我们可以使用sharex和sharey来指定不同subplot有相同的x-或y-axis(其实就是令坐标轴的范围相同),这能让我们在同一范围内进行数据之间的比较。不然的话,matplotlib会自动绘图的范围不一定是一样的。 ????????默认情况下,matplotlib会在subplot之间留下一定间隔的边距,这取决于绘图的高度和跨度。所以如果我们调整绘图的大小,它会自动调整。我们可以用Figure对象下的subplots_adjust方法来更改间隔,当然,也可以用第一层级的函数:
wspace和hspace控制figure宽度和长度的百分比,可以用来控制subplot之间的间隔。这里有一个例子,我们让间隔为0: ????????注意到轴上有些标签重叠了。matplotlib不会检查标签是否重叠,所以我们需要直接规定明确的tick location(记号位置)和tick labels(记号标签),这部分会稍后介绍。 1.3 颜色,标记物,线样式????????matplotlib的plot主函数能接受x和y坐标,在可选项中,字符串能指定颜色和线样式。例如,画出x和y,用绿色的点线:
????????这种方法可以很方便的同时指定颜色和线样式;不过有些用户可能不喜欢直接把规定颜色和样式的字符串写在一起,当然,我们也可以写得更明确一些:
????????有很多可供选择的颜色缩写,当然,我们也可以使用任意的颜色,通过制定hex code(十六进制码,比如’#CECECE’)。通过查看plot的字符串文档,我们可以看到可供选择的所有线样式(直接输入 ????????另外还可以用markers(标记物)来高亮实际的数据点。因为matplotlib创建一个continuous line plot(连续线条图)的话,如果想要插入,可能看不清楚哪里可以插入数据点。而marker可以作为样式的一部分,字符串必须按颜色,标记物类型,样式这样的顺序:
????????也可以分开写:
????????对于点线图,我们注意到,默认情况下,后续点是通过线性添加上的。这个可以通过drawstyle来更改:
1.4 标记,标签,图例????????对于大部分绘图的装饰,有两种主要的方法:使用pyplot(matplotlib.pyplot)和用更对象导向的简单的matplotlib API。 ????????pyplot界面是为交互式使用而设计的,它包含很多方法,比如xlim, xticks, xticklabels。这些方法控制绘图的范围,标记位置,标记标签。有两种使用方法:
????????所有这些方法,作用于激活的或最新创建的AxesSubplot对象上。每一个都在subplot有对应的两个方法;比如对于xlim,就有对应的ax.get_xlim和ax.set_xlim。这里使用subplot的方法,这样会更清晰。
????????为了改变x-axis tick(x轴标记),使用set_xticks和set_xticklabels。前者告诉matplotlib沿着x轴的范围,把标记放在哪里;默认会把所在位置作为标签,但我们可以用set_xticklabels来设置任意值作为标签:
????????rotation选项让x轴上的标记标签有一个30度的旋转。set_xlabel给x轴一个名字,而set_title给subplot一个标题:
????????用相同的流程来更改y轴,把上面代码里的x变为y。axes类有一个set方法,能让我们一次设置很多绘图特性。对于上面的例子,我们可以写成下面这样:
????????图例对于绘图很重要。有很多方式可以添加图例。最简单的方法是用label参数:
????????legend方法有一些选项,比如用loc参数设定位置。更多信息,可以参考字符串文档(ax.legend?) ????????loc告诉matplotlib把图例放在哪里。如果不挑剔的话,直接设定’best’就可以了,它会自动选择一个合适的位置。如果想要从图例中排除一个或更多的元素,那就不要传入label,或设置 1.5 注释????????除了标准的绘图类型,我们可能希望画出自己的绘图注释,包括文本,箭头或其他形状。我们可以添加注释和文本,通过text,arrow,和annotate函数。text能在指定的坐标(x, y)上写出文本,还可以自己设定样式:
????????注释可以画出文本和箭头。下面举个例子:
1.6 保存为文件????????我们可以用plt.savefig来保存图。这个方法等同于直接在figure对象上调用savefig方法。例如,想要保存一个SVG版本的图片,键入:
????????保存的文件类型通过文件名后缀来指定。即如果使用 .pdf做为后缀,就会得到一个PDF文件。这里有一些重要的设置,作者经常用来刊印图片:
????????比如我们想要得到一幅PNG图,有最小的空白,400 DPI,键入:
1.7 matplotlib设置????????matplotlib很多默认的设置是可以自己定义的,通过修改一些全局设定,比如图大小,subplot间隔,颜色,字体大小,网格样式等等。一种设定的方式是用rc方法,例如,想要设置全局的图大小为10 x 10,键入:
????????rc中的第一个参数是我们想要自定义的组件,比如’figure’, ‘axes’, ‘xtick’, ‘ytick’, ‘grid’, ‘legend’,或其他。然后添加一个关键字来设定新的参数。一个比较方便的写法是把所有的设定写成一个dict:
????????更详细的设定可以去看一下文档,matplotlib下的设置文件matplotlibrc,位于matplotlib/mlp-data文件夹下。如果按自己的方式修改这个文件,并把这个文件放在主目录下,更名为*.matplotlibrc*的话,在每次启动matplotlib的时候,会自动加载这个文件。 参考
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 12:33:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |