通过前几章的内容,我们已经学习了Matplotlib画图的基本概念比如Figure, Legend, Subplot等等,从本章开始,我们来学如何用Matplotlib画不同类型的图(折线图,散点图,柱状图等等)。
首先导入我们需要的库:
import matplotlib.pyplot as plt
import numpy as np
折线图
折线图是由多点连接起来的线条,在数据点不多的情况下,线条看似曲折状态,一旦数据集大了,在肉眼下将会呈现出平滑的曲线。
要画折线图,直接在plot函数中传入x数据点和y数据点即可:
x = np.linspace(-5, 5, 100)
fig, axe = plt.subplots()
axe.plot(x, np.sin(x))
plt.show()
如果想在同一个窗口画出多条线,直接执行多个plot函数:
x = np.linspace(-5, 5, 100)
fig, axe = plt.subplots()
axe.plot(x, np.sin(x))
axe.plot(x + 1, np.sin(x))
plt.show()
在同一个plot函数中放入多个x,y也能绘制出多条线,下面代码的运行结果会和上图一样:
x = np.linspace(-5, 5, 100)
fig, axe = plt.subplots()
axe.plot(x, np.sin(x), x + 1, np.sin(x))
plt.show()
除了上面的实线,线的格式,比如颜色,点标记,和类型都能被自定义。只需要设定好对应的参数(linestyle, color, maker, label):
x = np.linspace(-5, 5, 25)
fig, axe = plt.subplots(figsize= (8, 5))
axe.plot(x, x + 1, linestyle='-', color='r', marker='x', label="l1") # solid line style, red
axe.plot(x, x + 2, linestyle='--', color='y', marker='s', label="l2") # dashed line style, yellow, square
axe.plot(x, x + 3, linestyle='-.', color='m', marker='|', label="l3") # dash-dot line style, magenta, |
axe.plot(x, x + 4, linestyle=':', color='g', marker='v', label="l4") # dotted line style, green
axe.plot(x, x + 5, linestyle='-', color='b', marker='*', label="l5") # solid, blue,star
axe.plot(x, x + 6, linestyle='-', color='c', marker='o', label="l6") # solid, cyan, circle
axe.legend()
plt.show()
另一种设定线格式的方法就是使用fmt参数,传入格式字符(format string),这种方法能直接使用简短的text包含多种设置,比如以下 –b 代表蓝色的虚线,.r 代表点状的红线:
x = np.linspace(-4, 4, 100)
fig, axe = plt.subplots(figsize= (8, 5))
axe.plot(x, np.sin(x), '--b' , x + 1, np.sin(x), '.r') # dashed line blue, point marker red
plt.show()
散点图
除了折线图外,另一个最常见的图就是散点图了,散点图由多点组成,使用plot函数也能直接画出简单的散点图:
x = np.linspace(-5, 5, 100)
fig, axe = plt.subplots(figsize= (8, 5))
axe.plot(x, np.sin(x), "*")
plt.show()
另一种方法就是使用scatter函数来画散点图,这个函数能传入其他的参数,对图中的散点进行更多的自定义,比如每个点的大小, 颜色, 边缘颜色等等:
fig, axe = plt.subplots(figsize= (8, 5))
rng = np.random.RandomState(66)
x = rng.randn(50)
y = rng.randn(50)
colors = rng.randn(50)
sizes = rng.randn(50) * 500
axe.grid()
axe.scatter(x, y, c=colors, s=sizes, alpha=0.5)
plt.show()
以上就是关于如何使用Matplotlib画最常见的折线图和散点图啦,下一章我们来学习如何画柱状图。