Python数据可视化利器Matplotlib从入门到高级4

2D曲线绘制是Matplotlib绘图的最基本功能,也是用得最多、最重要的绘图功能之一,本文开始详细介绍Matplotlib 2D曲线绘图功能。我的介绍主要以面向对象的编码风格为主,但会在文章的末尾附上相应的pyplot风格的源代码,供大家查阅、对比。我们先看一段代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = 4 + 2 * np.sin(2 * x)

fig, ax = plt.subplots()
ax.plot(x, y)

plt.show()

代码运行效果如下:

Python数据可视化利器Matplotlib从入门到高级4

基本曲线绘图

这个绘图中我们没有作任何设置,一切交给Matplotlib处理。我们只是看到了绘制出的曲线的样子。但这与我们所想要的效果可能差异较大。所以我们还需要对图形进行一些自定义。

不管我们想生成什么样的图形,在Matplotlib当中,大致都可以总结为三步:一是构造绘图用的数据(Matplotlib推荐numpy数据,本系列介绍Matplotlib绘图,暂不涉及numpy的相关内容,留待后续有空余时吧);二是根据数据的特点选择适当的绘图方法并绘制出数据的图形;第三步则是对绘制的图形进行自定义设置或者美化以达到满足我们获得精美的输出图形的要求。

在上面的绘图中,我们仅仅做到了第二步,下面我们来进行一些自定义,而Matplotlib为此提供了非常丰富的功能。

更改曲线颜色

你可能最想先尝试一下换个颜色看看曲线是什么样的,这有很多种方法。首先,我们可以在绘制图形的时候直接指定它,我们把绘图的代码改成下面的样子:

ax.plot(x, y,'r')

这里的 ‘r’ 是 “red”的简写,表示将曲线的颜色指定为红色。也可以写成下面的样子,这样可读性更高:

ax.plot(x, y,color='red')

这些代码都是以绘图参数的方式直接指定曲线颜色。当我们只对曲线的有限几个属性感兴趣时,使用直接参数指定的方式会让代码看起来非常简单洁明了。plot支持的参数有几十个之多,如果你关注的属性比较多,再在绘图时直接指定就不太合适。这时的最好方式是在绘图完成之后再专门指定。为此我们把代码再作修改:

line1,=ax.plot(x, y,color=’b’)
line1.set_color('r')

plot 返回一个 Line2D 对象的列表,我们使用一个带有“ line1, ”的元组来解包,随后使用 set_color() 代码设置line1 曲线的颜色,请注意这里设置的颜色会覆盖 plot 绘图函数当中指定的颜色。上面三段代码各自独立运行之后的效果是一样的。如下:

Python数据可视化利器Matplotlib从入门到高级4

设置曲线的颜色

为了提高效率,Matplotlib模仿MATLAB支持常用颜色的单字母代码缩写。

字符	颜色
'b'	blue
'g'	green
'r'	red
'c'	cyan
'm'	magenta
'y'	yellow
'k'	black
'w'	white

你还可以使用不区分大小写的十六进制 RGB 或 RGBA 字符串(如:'#0f0f0f'),或者不区分大小写的 X11/CSS4 颜色名称(如:'aquamarine'),以及来自 xkcd color survey 的不区分大小写的颜色名称(如:'xkcd:sky blue')等等。更为详细的颜色规范,你可以查阅官方文档。但对于Python办公而言,掌握这些应该已经足够了。

更改曲线的线型和线宽

与曲线颜色一样,线型和线宽也有多种方式来指定:

line1,=ax.plot(x, y,color='b',linestyle='--',linewidth=1)

line1.set_color('r')
line1.set_linestyle('-.')
line1.set_linewidth(2.0)

这里我们最终指定的线宽为2.0磅,绘图函数当中指定的线宽被后续指定的属性值覆盖了。而线型在这里由set_linestyle()指定,其中“--”和“-.”都是Matplotlib中支持的线型,“--”表示虚线,而“-.”则是点划线。而Matplotlib默认的线型“-”实线,除此之外,Matplotlib还支持“:”点线。

自定义曲线上的标记点

我们绘制曲线之前构造的数据点在曲线上也可以标记出来,这些标记点有不同的风格。同样可以以不同的方式来设置它:

Python数据可视化利器Matplotlib从入门到高级4

带标记点的曲线

注意第一行代码当中的“r:o”字符串,它是一种简写形式,是将颜色、线型和标记点形状在一个字符串中同时设置的方式,其中的“r”表示红色,“:”表示点线,“o”表示标记点为大圆点。只有在颜色使用单字符代码时才可以像上面这样组合起来同时表示三个属性。默认情况下,标记点的颜色与线型颜色相同,但可以单独设置与曲线不同的颜色,不仅如此,标记点的边线颜色和中间填充颜色也都可以单独设置。上面第二行代码我们就使用set_markeredgecolor('b')将标记点边线颜色设置为了蓝色。与标记点设置相关的还有set_marker(设置标记点形状)、set_markeredgewidth(设置标记点边线宽度)、set_markerfacecolor(设置标记点中间的填充色)、set_markersize (设置标记点的大小)等。下面是我整理的Matplotlib支持的所有标记点形状。

标记marker	描述
‘o’	大圆点
‘.’	小圆点
‘,’	像素点(这个点看起来最小)
‘^’	一角朝上的三角形
‘v’	一角朝下的三角形
‘<’	一角朝左的三角形
‘>’	一角朝右的三角形
‘1’	下箭头
‘2’	上箭头(更像奔驰车标)
‘3’	左箭头
‘4’	右箭头
‘8’	八边形
0	靠左的水平刻度线
1	靠右的水平刻度线
2	靠上的垂直刻度线
3	靠下的垂直刻度线
4	左插入号(小左尖三角形)
5	右插入号(小右尖三角形)
6	上插入号(小上尖三角形)
7	下插入号(小下尖三角形)
8	左插入号(小左尖三角形)-基点为中心
9	右插入号(小右尖三角形)-基点为中心
10	上插入号(小上尖三角形)-基点为中心
11	下插入号(小下尖三角形)-基点为中心
‘s’	正方形
‘D’	菱形
‘d’	小菱形
‘*’	五角星
‘p’	五边形
‘h’	六边形1(尖头垂直)
‘H’	六边形2(尖头水平)
‘_’	水平线
‘|‘	垂直线
‘+’	加号  
‘x’	小x形
‘X’	大X形
‘$...$’	支持LaTex公式
‘None	无 

本文先介绍到此,后续进一步介绍坐标轴、图例和网格线的设置。最后附上本文pyplot风格的绘图代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = 4 + 2 * np.sin(2 * x)

#mec是markeredgecolor的简写,ms是markersize的简写,pyplot 模块中没有对应的 set_函数,只能在绘图函数中直接设置。
plt.plot(x, y,'r:o',linewidth=2,mec='b',ms=8)

plt.show()

显然这种简单绘图pyplot风格要简洁一些,还是很有优势的。


如果觉得我的内容对您有帮助,别忘了点赞关注加转发。您的支持是我继续写作的动力。

展开阅读全文

页面更新:2024-03-04

标签:角形   简写   刻度   基点   箭头   利器   曲线   标记   图形   入门   颜色   高级   代码   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top