Python学习笔记(7)——Matplotlib中的Axes.plot(绘制点、线和标记)的用法

Axes.plot用于绘制XY坐标系的点、线或其他标记形状。

1.调用方法

plot([x], y, [fmt], data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
  • 点和线的坐标由参数x,y提供。可选参数fmt是一个快捷字符串,用于定义颜色、标记符合和线条形状,例如:
>>> plot(x, y)        # 使用默认颜色和形状
>>> plot(x, y, 'bo')  # 使用蓝色(blue)、圆点型绘图
>>> plot(y)           # 绘制y坐标,x坐标使用列表0..N-1
>>> plot(y, 'r+')     # 同上,但使用红色(red)+号形状
  • 也可以使用Line2D属性作为关键字,以此来更好的控制显示效果,Line属性和fmt可以混合使用,下面两种写法效果相同。当关键字与fmt冲突时,关键字优先。
>>> plot(x, y, 'go--', linewidth=2, markersize=12)
>>> plot(x, y, color='green', marker='o', linestyle='dashed',
...      linewidth=2, markersize=12)
  • 绘制带标签的数据——使用data参数可以很方便的绘制带标签的数据,所有可索引的类型都支持,例如dict、pandas.DataFame或结构化的numpy数组。
>>> plot('xlabel', 'ylabel', data=obj)
  • 绘制多组数据——有多种方法可以绘制多组数据,例如:

最直接的方式就是多次调用plot方法。

>>> plot(x1, y1, 'bo')
>>> plot(x2, y2, 'go')

或者,你的数据本身是一个二维数组,就可以直接传入x,y,数据的每一列都会被绘制成图。例如:数组a的第一列代表x值,其他列代表y值。

>>> plot(a[0], a[1:])

第三种方法是用多组 [x]y[fmt] 指定数据集。这种情况下,任何关键字参数将被用于所有数据集,而且这种语法也不能与参数data同时用。

>>> plot(x1, y1, 'g^', x2, y2, 'g-')

默认情况下,每一条线的样式会设为一组样式集中的不同样式,如果想区别于默认样式就可以使用fmt和线条属性参数。或者也可以使用 'axes.prop_cycle'改变默认样式集。

2. 参数

  • x,y:类数组或极坐标。

水平/垂直坐标系中的数据点,x是可选参数,默认为[0,..., N-1].

通常,参数x,y是长度为N的数组,也支持极坐标(相当于一个常数值数组)。

参数也可以是二维的,此时,每一列代表一个数据集。

  • fmt:字符串,可选参数。

格式化字符串,例如‘ro’代表红色圆圈。

格式字符串是用于快速设置基本线条样式的缩写,这些样式或更多的样式可通过关键字参数来实现。

fmt = '[color][marker][line]'

color(颜色)、marker(标记点)、line(线条)都是可选的,例如如果指定line而不指定marker,将绘制不带标记点的线条。

支持的颜色缩写如下:

字符颜色
'b'blue 蓝色
'g'green 绿色
'r'red 红色
'c'cyan 青色
'm'magenta 紫红色
'y'yellow 黄色
'k'black 黑色
'w'white 白色

支持的marker缩写如下:

字符描述
'.'point marker 点
','pixel marker  像素
'o'circle marker 圆形
'v'triangle_down marker 下三角
'^'triangle_up marker 上三角
'<'triangle_left marker 左三角
'>'triangle_right marker 右三角
'1'tri_down marker
'2'tri_up marker
'3'tri_left marker
'4'tri_right marker
's'square marker 方形
'p'pentagon marker 五角形
'*'star marker 星型
'h'hexagon1 marker 六角形1
'H'hexagon2 marker 六角形2
'+'plus marker 加号
'x'x marker ×型
'D'diamond marker 钻石型
'd'thin_diamond marker 细钻石型
'|'vline marker 竖线型
'_'

hline marker 横线型

支持的line缩写如下:

字符描述
'-'solid line style 实线
'--'dashed line style 虚线
'-.'dash-dot line style 交错点线
':'dotted line style 点线
  • data:索引类型的对象,可选。

有标记的数据对象,如果给定该参数,请提供要在x和y中绘制的标签名称。

3. 返回值

  • lines:

代表绘制数据的Line2D对象。

4. 其他参数

  • scalex, scaley:布尔值,可选,默认为True。

这组参数用于设置图形坐标的边界是否适应数据的边界,参数值传给autoscale_view

  • **kwargs:Line2D 属性,可选

kwargs用于设置特殊的属性,如线条标签、线条宽度、平滑效果、标记点的颜色等。

>>> plot([1,2,3], [1,2,3], 'go-', label='line 1', linewidth=2)
>>> plot([1,2,3], [1,4,9], 'rs',  label='line 2')

如果使用一个命令绘制多条线,那么kwargs的样式将被用于所有线条。

Line2D包含的属性如下:

属性描述
agg_filtera filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array
alphafloat
animatedbool
antialiasedbool
clip_boxBbox
clip_onbool
clip_path[(PathTransform) | Patch | None]
colorcolor
containscallable
dash_capstyle{'butt', 'round', 'projecting'}
dash_joinstyle{'miter', 'round', 'bevel'}
dashessequence of floats (on/off ink in points) or (None, None)
drawstyle{'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}
figureFigure
fillstyle{'full', 'left', 'right', 'bottom', 'top', 'none'}
gidstr
in_layoutbool
labelobject
linestyle{'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidthfloat
markerunknown
markeredgecolorcolor
markeredgewidthfloat
markerfacecolorcolor
markerfacecoloraltcolor
markersizefloat
markeveryunknown
path_effectsAbstractPathEffect
pickerfloat or callable[[Artist, Event], Tuple[bool, dict]]
pickradiusfloat
rasterizedbool or None
sketch_params(scale: float, length: float, randomness: float)
snapbool or None
solid_capstyle{'butt', 'round', 'projecting'}
solid_joinstyle{'miter', 'round', 'bevel'}
transformmatplotlib.transforms.Transform
urlstr
visiblebool
xdata1D array
ydata1D array
zorderfloat

 

5. 一些示例

  • 基本绘图
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)

fig, ax = plt.subplots()
ax.plot(t, s)

ax.set(xlabel='time (s)', ylabel='voltage (mV)',
       title='About as simple as it gets, folks')
ax.grid()

fig.savefig("test.png")
plt.show()

  • 用一个命令绘制3条不同的线
import numpy as np
import matplotlib.pyplot as plt

# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)

# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()

  • 3种不同的连线效果
import numpy as np
import matplotlib.pyplot as plt


def plot_angle(ax, x, y, angle, style):
    phi = np.radians(angle)
    xx = [x + .5, x, x + .5 * np.cos(phi)]
    yy = [y, y, y + .5 * np.sin(phi)]
    ax.plot(xx, yy, lw=8, color='blue', solid_joinstyle=style)
    ax.plot(xx[1:], yy[1:], lw=1, color='black')
    ax.plot(xx[1::-1], yy[1::-1], lw=1, color='black')
    ax.plot(xx[1:2], yy[1:2], 'o', color='red', markersize=3)
    ax.text(x, y + .2, '%.0f degrees' % angle)


fig, ax = plt.subplots()
ax.set_title('Join style')

for x, style in enumerate((('miter', 'round', 'bevel'))):
    ax.text(x, 5, style)
    for i in range(5):
        plot_angle(ax, x, i, pow(2.0, 3 + i), style)

ax.set_xlim(-.5, 2.75)
ax.set_ylim(-.5, 5.5)
plt.show()

更多示例参考官方文档。


参考:

官方文档https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.plot.html#matplotlib.axes.Axes.plot

  • 45
    点赞
  • 250
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值