1.1.2 标题、标签、坐标轴刻度
1.1.2.1 标题的设置
🚩标题其实就是图片的名字,即这个图片是什么,表达的是什么样的含义
# 数据还是刚刚绘制的正弦图 plt.plot(x, y) # 图的标题设置为 Sin(x),字体大小设为18,颜色设为红色,标题离图片的间距为20 plt.title('Sin(x)', fontsize = 18, color = 'red', pad = 20)
那么我们是否可以把标题设置为中文呢?
# 数据还是刚刚绘制的正弦图 plt.plot(x, y) # 图的标题设置为正弦波,字体大小设为18,颜色设为红色,标题离图片的间距为20 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20)
WTF??? 居然乱码报错了,下面我们来介绍解决的方法:
首先先来查看一下我们电脑都有哪些字体:
# 找到电脑的字体 from matplotlib import font_manager fm = font_manager.FontManager() # 用列表生成式获取字体 [font.name for font in fm.ttflist]
我们的电脑有很多的字体,这个截图只展示了一部分字体,其中有英文字体,中文字体…
我们可以找找有没有 KaiTi(楷体)
浏览器页面搜索(Google浏览器),按下 Ctrl + F,输入 KaiTi:
或者你搜宋体什么的都是可以的,一般电脑都会有这些字体,接下来回到我们的报错代码上,我们来设置我们的字体:
# 数据还是刚刚绘制的正弦图 plt.plot(x, y) # 设置字体为楷体 plt.rcParams['font.family'] = 'KaiTi' # 图的标题设置为正弦波,字体大小设为18,颜色设为红色,标题离图片的间距为20 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20)
这下 正弦波 被显示出来了,可是还是有报错,这波啊~,这波叫做对了但没完全对,我们通过观察图像可以发现是负号有出了问题:
害,多大点事儿嘛,有 bug 咋们就接着改就完了:
# 数据还是刚刚绘制的正弦图 plt.plot(x, y) # 设置字体为楷体 plt.rcParams['font.family'] = 'KaiTi' # 设置数字的负号 plt.rcParams['axes.unicode_minus'] = False # 图的标题设置为正弦波,字体大小设为18,颜色设为红色,标题离图片的间距为20 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20)
ok,这下所有的 bug 就完美的解决了,但是总看的不得劲,字体有点小了,看起来费眼睛,我们来把所有的字体都变得大一点:
# 数据还是刚刚绘制的正弦图 plt.plot(x, y) # 设置字体为楷体 plt.rcParams['font.family'] = 'KaiTi' # 设置数字的负号 plt.rcParams['axes.unicode_minus'] = False # 把所有的字体都设置成 28 大小 plt.rcParams['font.size'] = 28 # 图的标题设置为正弦波,字体大小设为18,颜色设为红色,标题离图片的间距为20 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20)
好家伙,又出问题了,我们的字体虽然都变大了(图片显示的不明显,读者自己执行一下代码会有明显的变化),但是相对应的我们的图变小了,我们来设置一下图片的尺寸:
# 设置图片的大小 plt.figure(figsize = (12, 9)) # 数据还是刚刚绘制的正弦图 plt.plot(x, y) # 设置字体为楷体 plt.rcParams['font.family'] = 'KaiTi' # 设置数字的负号 plt.rcParams['axes.unicode_minus'] = False # 把所有的字体都设置成 28 大小 plt.rcParams['font.size'] = 28 # 图的标题设置为正弦波,字体大小设为18,颜色设为红色,标题离图片的间距为20 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20)
1.1.2.2 标签的设置
🚩标签对应到我们的上图之中其实就是横纵坐标
plt.figure(figsize = (9, 6)) plt.plot(x, y) plt.rcParams['font.family'] = 'KaiTi' plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.size'] = 28 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20) # 设置横坐标为 X plt.xlabel('X') # 设置纵坐标为 f(x) = sin(x) plt.ylabel('f(x) = sin(x)')
看着纵坐标竖着不舒服,我们把它横过来:
plt.figure(figsize = (9, 6)) plt.plot(x, y) plt.rcParams['font.family'] = 'KaiTi' plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.size'] = 28 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20) # 设置横坐标为 X plt.xlabel('X') # 设置纵坐标为 f(x) = sin(x) plt.ylabel('f(x) = sin(x)', rotation = 0)
纵坐标离 y yy轴有点近,我们继续调整一下:
plt.figure(figsize = (9, 6)) plt.plot(x, y) plt.rcParams['font.family'] = 'KaiTi' plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.size'] = 28 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20) # 设置横坐标为 X plt.xlabel('X') # 设置纵坐标为 f(x) = sin(x) plt.ylabel('f(x) = sin(x)', rotation = 0, horizontalalignment = 'right')
1.1.2.3 坐标轴刻度的设置
🚩接下来我们设置刻度,上图中的 0 2 4 6 -1.0 -0.5 0.0 0.5 1.0
其实就是刻度,因为我们现在描绘的是正弦波,对于正弦波而言,我们y轴上的刻度其实给-1 0 1就可以了:
我们的横坐标刻度对于正弦波而言一般是0,π/2,π,3π/2,2π:
plt.figure(figsize = (9, 6)) plt.plot(x, y) plt.rcParams['font.family'] = 'KaiTi' plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.size'] = 28 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20) plt.xlabel('X') plt.ylabel('f(x) = sin(x)', rotation = 0, horizontalalignment = 'right') # 设置y轴上的刻度为:-1 0 1 plt.yticks([-1, 0, 1]) # 设置x轴的刻度 plt.xticks([0, np.pi / 2, np.pi, 1.5 * np.pi, 2 * np.pi])
这好像和我们希望的不太一样,这编译器太实诚了,直接把 π 带入计算了,我们希望的显然不是这样,我们希望 π 用希腊字母进行显示:
plt.figure(figsize = (9, 6)) plt.plot(x, y) plt.rcParams['font.family'] = 'KaiTi' plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.size'] = 28 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20) plt.xlabel('X') plt.ylabel('f(x) = sin(x)', rotation = 0, horizontalalignment = 'right') # 设置y轴上的刻度为:-1 0 1 plt.yticks([-1, 0, 1]) # 设置x轴的刻度 plt.xticks([0, np.pi / 2, np.pi, 1.5 * np.pi, 2 * np.pi], [0, r'$\frac{\pi}{2}$', r'$\pi$', r'$\frac{3\pi}{2}$', r'$2\pi$'])
当然我们可以设置颜色,比如我们设置横坐标刻度为红色:
plt.figure(figsize = (9, 6)) plt.plot(x, y) plt.rcParams['font.family'] = 'KaiTi' plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.size'] = 28 plt.title('正弦波', fontsize = 18, color = 'red', pad = 20) plt.xlabel('X') plt.ylabel('f(x) = sin(x)', rotation = 0, horizontalalignment = 'right') # 设置y轴上的刻度为:-1 0 1 plt.yticks([-1, 0, 1]) # 设置x轴的刻度 plt.xticks([0, np.pi / 2, np.pi, 1.5 * np.pi, 2 * np.pi], [0, r'$\frac{\pi}{2}$', r'$\pi$', r'$\frac{3\pi}{2}$', r'$2\pi$'], color = 'red')