折线图

绘制折线图操作

格式化绘图样式

关键函数matplotlib.pyplot.plot调用格式如下:

plot([x], y, [fmt], data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

使用参数fmt格式化线条,输入值是一个字符串

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

3部分组成:颜色+标记符+线条类型,每一个值都是可选的。如果给定了line,但是没有指定marker,那么线条仅仅是线段,没有标记符

支持以下颜色:

  • b:蓝色
  • g:绿色
  • r:红色
  • c:青色
  • m:紫红
  • y:黄色
  • k:黑色
  • w:白色

支持以下标记符:

支持以下线条类型:

  • -:实线
  • --:虚线
  • -.:点划线
  • ::点线
# -*- coding: utf-8 -*-

"""
折线图(line chart)
"""

import matplotlib.pyplot as plt

y = list(range(1, 5))

fig = plt.figure()

plt.subplot(221)
plt.plot(y, 'ro-')
plt.title('红色圆形实线')

plt.subplot(222)
plt.plot(y, 'b.--')
plt.title('蓝色点形虚线')

plt.subplot(223)
plt.plot(y, 'ms-.')
plt.title('紫红色方形点划线')

plt.subplot(224)
plt.plot(y, 'g^:')
plt.title('绿色上三角形点线')

plt.savefig('line-chart.png')
plt.show()

设置线条标签

当在Axes中绘制多条线时,使用函数matplotlib.pyplot.legend显示线条标签

# -*- coding: utf-8 -*-

"""
折线图(line chart)
"""

import matplotlib.pyplot as plt
import numpy as np

x = y = np.array(range(1, 5))

plt.plot(x, y, label='线条1')
plt.plot(x, y ** 2, label='线条2')
plt.plot(x, y ** 3, label='线条3')

plt.legend()

plt.savefig('line-legend-1.png')
plt.show()

添加文本

使用函数matplotlib.pyplot.text可以在Axes上添加额外文本信息

matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs)

参数x/y是标量,表示文本坐标,需要匹配相应坐标系 参数s表示文本内容 参数fontsize用于设置文本大小,默认为12

# -*- coding: utf-8 -*-

"""
折线图(line chart)
"""

import matplotlib.pyplot as plt
import numpy as np

x = y = np.array(range(1, 5))

plt.plot(x, y, label='线条1')
plt.plot(x, y ** 2, label='线条2')
plt.plot(x, y ** 3, label='线条3')

plt.text(1.0, 55, r'$\mu=100,\ \sigma=15$', fontsize=12)
plt.text(1.0, 50, r'蓝色:线条1', fontsize=20)

plt.savefig('line-text.png')
plt.show()

可以在文本字符串中输入Tex数学公式

已知两点坐标绘制直线

参考:matplotlib画直线

使用函数matplotlib.axes.Axes.add_line绘制图像,使用matplotlib.lines.Line2D保存点数据

from matplotlib.lines import Line2D
import matplotlib.pyplot as plt

if __name__ == '__main__':
    spots = [[2, 5], [10, 66]]

    (line_xs, line_ys) = zip(*spots)
    print(line_xs)
    print(line_ys)

    figure, ax = plt.subplots()
    plt.scatter(line_xs, line_ys, color='r')
    ax.add_line(Line2D(line_xs, line_ys, linewidth=1, color='b'))
    ax.add_line

    plt.show()