8.添加图例
对于前面示例的折线图,我们必须查看代码来了解描述的是哪种函数。 为方便起见,应在绘图中提供此信息。
图例(Legend)常在地图中使用。 Legend用来描述地图的图形语言或符号系统。
Matplotlib可以使用图例来解释图中函数或值的代表的含义。
在下面的简单示例中演示如何在图形上放置图例。 图例包含一个或多个entries。 每个entry都包含一个键(key)和一个标签(label)。
pyplot 函数
legend(*args, **kwargs)
用来在轴上放置一个图例
# next line only needed if working with "ipython notebook":
import numpy as np
import matplotlib.pyplot as plt
ax = plt.gca()
ax.plot([1, 2, 3, 4])
ax.legend(['A simple line'])
plt.show()
如果向plot函数添加一个标签(label),该值将用作legend命令中的标签。 legend函数还需要的参数是位置参数“loc”:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 25, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, '-b', label='sine')
plt.plot(x, y2, '-r', label='cosine')
plt.legend(loc='upper left')
plt.ylim(-1.5, 2.0)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0, 25, 1000)
F1 = np.sin(0.5 * X)
F2 = 3 * np.cos(0.8*X)
plt.plot(X, F1, label="$sin(0.5 * x)$")
plt.plot(X, F2, label="$3 sin(x)$")
plt.legend(loc='upper right')
plt.show()
在许多情况下,我们不知道在plot之前结果可能是什么样子。 例如,legend将使线条的重要部分蒙上阴影。 如果不知道数据的显示情况,最好使用’best’作为loc的参数。 Matplotlib将自动尝试为图例找到最佳位置:
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0, 25, 1000)
F1 = np.sin(0.5 * X)
F2 = 3 * np.cos(0.8*X)
plt.plot(X, F1, label="$sin(0.5 * x)$")
plt.plot(X, F2, label="$3 sin(x)$")
plt.legend(loc='best')
plt.show()
再次运行的时候,发现图例可能会到左上角。在以下两个示例中可以看到 loc ='best’能很好地工作:
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(-2 * np.pi, 2 * np.pi, 70, endpoint=True)
F1 = np.sin(0.5*X)
F2 = -3 * np.cos(0.8*X)
plt.xticks( [-6.28, -3.14, 3.14, 6.28],
[r'$-2\pi$', r'$-\pi$', r'$+\pi$', r'$+2\pi$'])
plt.yticks([-3, -1, 0, +1, 3])
plt.plot(X, F1, label="$sin(0.5x)$")
plt.plot(X, F2, label="$-3 cos(0.8x)$")
plt.legend(loc='best')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(-2 * np.pi, 2 * np.pi, 70, endpoint=True)
F1 = np.sin(0.5*X)
F2 = 3 * np.cos(0.8*X)
plt.xticks( [-6.28, -3.14, 3.14, 6.28],
[r'$-2\pi$', r'$-\pi$', r'$+\pi$', r'$+2\pi$'])
plt.yticks([-3, -1, 0, +1, 3])
plt.plot(X, F1, label="$sin(0.5x)$")
plt.plot(X, F2, label="$3 cos(0.8x)$")
plt.legend(loc='best')
plt.show()
8.1.添加标题(Adding a Title)
使用函数pyplot.title(label, fontdict=None, loc=None, pad=None, **kwargs) 可为绘图设置标题。
import matplotlib.pyplot as plt
days = list(range(1,9))
celsius_values = [25.6, 24.1, 26.7, 28.3, 27.5, 30.5, 32.8, 33.1]
plt.plot(days, celsius_values)
plt.xlabel('Day')
plt.ylabel('Degrees Celsius')
plt.title('Change of Celsius Degrees', size=11)
plt.show()