import matplotlib.pyplot as plt
def plot_func(x, y):
x_s = x[1:] - y[:-1]
y_s = y[1:] - x[:-1]
plt.plot(x[1:], x_s / y_s)
x = np.linspace(-5, 5, 200)
y = np.exp(-x ** 2)
plt.plot(x, y)
plot_func(x, y)
plt.show()
绘制图形如下:
可以看到,尽管其中一个plt.plot()是在plot_func函数中调用的,它对图形的呈现没有任何影响,因为plt.plot()只是声明了我们要呈现的内容,但还没有执行渲染。因此可以使用此特性结合for循环、条件判断等语法完成复杂图形的绘制,同时也可以在同一张图中组合不同类型的统计图。
读取数据文件绘制曲线图
很多情况下数据都是存储于文件中,因此,需要首先读取文件中的数据,再进行绘制,说明起见,以.txt
文件为例,其他诸如Excel、CSV文件
可以使用pandas、numpy
等库进行读取。
假设存在data.txt
文件如下:
0 1
1 2
2 5
4 17
5 26
6 37
读取数据和绘制的代码如下:
read_txt.py
import matplotlib.pyplot as plt
x, y = [], []
for line in open(‘data.txt’, ‘r’):
values = [float(s) for s in line.split()]
x.append(values[0])
y.append(values[1])
plt.plot(x, y)
plt.show()
如果使用Numpy库,其等效代码可以写为:
import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt(‘data.txt’)
plt.plot(data[:,0], data[:,1])
plt.show()
当绘制曲线图时,我们假设点与点之间存在序列关系。而散点图是简单地绘制点,它们之间并不存在连接。
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(1000, 2)
plt.scatter(data[:,0], data[:,1])
plt.show()
Tips:函数plt.scatter()的调用方式与plt.plot()完全相同,分别将点的x和y坐标作为输入参数。