天天看点

matplotlib基础绘图命令之plot

在matplotlib中,plot命令主要用于绘制折线图, 基本用法如下

>>> import matplotlib.pyplot as plt

>>> plt.plot([1, 2, 3, 4], [1, 2, 3, 4])

输出结果如下

matplotlib基础绘图命令之plot

第一个参数的值作为x轴坐标,第二个参数的值作为y轴坐标,从而绘制折线图。当只提供一个数值参数时,自动将其作为y轴坐标,x轴坐标为对应的数值下标,示例如下

>>> plt.plot([1, 2, 3, 4])      

输出结果如下

matplotlib基础绘图命令之plot

当我们想要对dict或者pandas DataFrame中的数据进行绘图时,可以采用如下语法

>>> import pandas as pd
>>> data_dict = pd.DataFrame({'xlabel':[1, 2, 3, 4], 'ylabel':[1, 2, 3, 4]})
>>> plt.plot('xlabel', 'ylabel', data=data_dict)      

对于可以用data['xlabel']方式访问的数据,不在需要显示的指定具体的值,而是通过结合data参数,只需要提供名称即可。

尽管plot命令主要用于绘制折线图,但是通过控制其参数,也可以用于绘制散点图以及散点和折线的组合图,示例如下

1. 散点图

>>> import numpy as np
>>> x = np.array([1, 2, 3, 4])
>>> y = np.array([1, 2, 3, 4])
>>> plt.plot(x,y,'o')      

输出结果如下

matplotlib基础绘图命令之plot

2. 散点图和直线图的叠加

>>> plt.plot(x,y,marker='o', linestyle='--', linewidth=2)      

输出结果如下

matplotlib基础绘图命令之plot

通过调整参数,可以实现不同的可视化效果。plot命令的参数设置围绕点和线两个基本元素进行。对于点而言,拥有以下基本属性

1. 填充色, markerfillcolor, 简写为mec

2. 边框颜色,markeredgecolor, 简写为mfc

3. 边框的线条宽度,markeredgewidth, 简写为mfc

4.大 小, markersize, 简写为ms

5. 形状, marker

对于线而言,用于以下基本属性

1. 颜色, color, 简写为c

2. 宽度,linewidth, 简写为lw

3. 风格,实线还是虚线,linestyle. 简写为ls

对于颜色,在matplotlib中,其实是有多种设定的方法,这里只介绍最常用的一种,颜色的缩写,示意如下

matplotlib基础绘图命令之plot

对于点的形状,提供了多种取值,示意如下

matplotlib基础绘图命令之plot

对于线条的风格,取值如下

matplotlib基础绘图命令之plot

对于大部分参数,在标准名称之外,还提供了对应的简写,进一步较少代码量。plot命令的参数设置有多种写法

1. 单独设置

顾名思义,需要显示的指定每个参数的值,示例如下

>>> plt.plot(x,y,marker='o', linestyle='--', linewidth=2, color ='black', markersize=6)      

输出结果如下

matplotlib基础绘图命令之plot

当然,简写也是可行的

>>> plt.plot(x,y,marker='o', ls='--', lw=2, c ='black', ms=6)      

2. 混合设置

plot命令支持参数的混合设置,可以将marker, linestyle, color 3个参数混合到一起,示例如下

>>> plt.plot(x,y,'ko--' ,lw=2, ms=6)      

注意,参数的混合是一种语法糖,在前面是没有具体的参数名称的,k是颜色black的简写,o对应marker参数,--对应linestyle参数, 在解析不会混淆的情况下,顺序没固定要求,不过官方更推荐以下顺序

[marker][linestyle][color]      

该代码的输出结果和之前的代码输出结果完全相同,灵活运用各种语法糖,可以极大的减少代码量。

除了绘制单个线条,plot命令也支持多种线条的叠加,常见的有以下两种写法,第一种示例如下

>>> plt.plot(x, y, label = 'sampleA')
>>>plt.plot(x, y + 1, label = 'sampleB')
>>>plt.plot(x, y + 2, label = 'sampleC')
>>>plt.legend()      

输出结果如下

matplotlib基础绘图命令之plot

第二种写法如下

>>> plt.plot(x, y, x, y + 1, x, y + 2)
>>> plt.legend(labels=['sampleA', 'sampleB', 'sampleC'])      

输出结果如下

matplotlib基础绘图命令之plot

当在同一幅图片上绘制多条折线时,matplotlib有一个内置的调色盘,颜色梯度如下

'#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'      

会自动根据调色盘,为每个折线设置不同的颜色,所以通常情况下,我们不需要手工设定每条线的颜色,这个默认的颜色梯度通过axes.prop_cycle参数设定。和R的base plot语法相比,matplotlib中的plot命令在绘制多条直线时更加的简洁直观。

·end·

一个只分享干货的

继续阅读