Matplotlib 教程 - 折线图

  1. Matplotlib 绘制直线
  2. Matplotlib 绘制曲线
  3. 线型

我们从绘制基本图表类型 - 折线图开始。plot 可以轻松绘制出直线或曲线之类的线,并具有不同的配置,例如颜色、宽度和标记大小等。

Matplotlib 绘制直线

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 9, 10)  
y = 2 * x
plt.plot(x, y, "b-")
plt.show()

它绘制 y=2*x 的直线,其中 x 是在 0 到 9 之间的范围内。

Matplotlib 折线图-线性折线

plt.plot(x, y, "b-")

它绘制的 xy 的数据采用线条样式 b -蓝色以及 - -实线。

Matplotlib 绘制曲线

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 4 * np.pi, 1000)  
y = np.sin(x)

plt.plot(x, y, "r--")

plt.show()

它会绘制一个正弦波形,其线型为红色 r 和虚线 --

Matplotlib 折线图-曲线

线型

你可以在 plt.plot() 函数中使用不同的输入参数来更改线条类型,例如宽度、颜色和线条样式。

matplotlib.pyplot.plot(*args, **kwargs)

参数

名称 描述
x, y 数据点的水平/垂直坐标
fmt 格式字符串,例如’b-‘表示蓝色实线

**kwargs

属性 描述
colorc 任何 matplotlib 颜色
figure Figure 实例
label 对象
linestylels [‘solid’ | ‘dashed’, ‘dashdot’, ‘dotted’ | (offset, on-off-dash-seq) | '-']
linewidthlw 线宽,以 points 为单位
marker 有效的marker格式
markersizems float 类型
xdata 一维阵列
ydata 一维阵列
zorder float 类型

线的颜色

Matplotlib 中有不同的方法可以在 color 参数中命名颜色。

单字母别名

基本的内置颜色具有以下别名:

| 别名 | 颜色 | | — | – | | b | 蓝色 | | g | 绿色 | | r | 红色 | | c | 青色 | | m | 品红 | | y | 黄色 | | k | 黑色 | | w | 白色 |

Matplotlib 折线图-颜色单字母别名

HTML 十六进制字符串

你可以将有效的 html 十六进制字符串传递给 color 参数,例如

color = "#f44265"

RGB 元组

你也可以使用 R,G,B 元组指定颜色,其中 R,G,B 值在 [0, 1] 的范围内,而不是在正常的范围 [0, 255] 内。

上面的 html 十六进制字符串表示的颜色的 RGB 值为 (0.9569, 0.2588, 0.3891)

color = (0.9569, 0.2588, 0.3891)

线型

Matplotlib 具有 4 种内置线型,

线型
- Matplotlib 折线图-线型-'-'
-- Matplotlib 折线图-线型-'-'
: Matplotlib 折线图-线型-':'
:- Matplotlib 折线图-线型-'-'
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 4 * np.pi, 1000)  

for index, line_style in enumerate(['-', '--', ':', '-.']):
    y = np.sin(x - index*np.pi/2)
    plt.plot(x, y, 'k', linestyle=line_style, lw=2)

plt.title("Line Style")
plt.grid(True)

plt.show()

Matplotlib 折线图-线型

线宽

你可以使用参数指定线宽 linewidth,如下所示:

linewidth = 2 # unit is points

或只是使用其缩写,

lw = 2
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 20, 21)  

for line_width in [0.5, 1, 2, 4, 8]:
    y = line_width * x
    plt.plot(x, y, 'k', linewidth=line_width)

plt.title("Line Width")
plt.grid(True)

plt.show()

Matplotlib 折线图-线宽

comments powered by Disqus