莫烦课程笔记总结之matplotlib——annotation标注

Posted 努力爬行的小虫子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了莫烦课程笔记总结之matplotlib——annotation标注相关的知识,希望对你有一定的参考价值。

如何在图片中添加一个注解呢?

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 x = np.linspace(-3,3,50)
 5 y = 2*x+1
 6 
 7 plt.figure(num=1,figsize=(8,5),)
 8 plt.plot(x,y)
 9 
10 ax = plt.gca()
11 ax.spines[\'right\'].set_color(\'none\')
12 ax.spines[\'top\'].set_color(\'none\')
13 
14 #设置x轴
15 ax.xaxis.set_ticks_position(\'bottom\')
16 ax.spines[\'bottom\'].set_position((\'data\',0))
17 
18 #设置y轴
19 ax.yaxis.set_ticks_position(\'left\')
20 ax.spines[\'left\'].set_position((\'data\',0))
21 
22 
23 x0 = 1
24 y0 = 2*x0+1
25 
26 #将图表显示出来
27 plt.show()

 

运行上面代码后,起初图形是这样的:                                                                                               添加注解后的图像:

          

 

 

 

 

首先了解plt.scatter(x,y)  表示的是一系列的点的形式

例如:

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 x = np.linspace(-3,3,50)
 5 y = 2*x+1
 6 
 7 plt.figure(num=1,figsize=(8,5),)
 8 plt.scatter(x,y)
 9 
10 ax = plt.gca()
11 ax.spines[\'right\'].set_color(\'none\')
12 ax.spines[\'top\'].set_color(\'none\')
13 
14 #设置x轴
15 ax.xaxis.set_ticks_position(\'bottom\')
16 ax.spines[\'bottom\'].set_position((\'data\',0))
17 
18 #设置y轴
19 ax.yaxis.set_ticks_position(\'left\')
20 ax.spines[\'left\'].set_position((\'data\',0))
21 
22 
23 x0 = 1
24 y0 = 2*x0+1
25 # plt.scatter()
26 #将图表显示出来
27 plt.show()

得到的结果是:

 

 

 然后在上面的代码进行改动

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 x = np.linspace(-3,3,50)
 5 y = 2*x+1
 6 
 7 plt.figure(num=1,figsize=(8,5),)
 8 plt.plot(x,y)
 9 
10 ax = plt.gca()
11 ax.spines[\'right\'].set_color(\'none\')
12 ax.spines[\'top\'].set_color(\'none\')
13 
14 #设置x轴
15 ax.xaxis.set_ticks_position(\'bottom\')
16 ax.spines[\'bottom\'].set_position((\'data\',0))
17 
18 #设置y轴
19 ax.yaxis.set_ticks_position(\'left\')
20 ax.spines[\'left\'].set_position((\'data\',0))
21 
22 #显示(x0,y0)这个点
23 x0 = 1
24 y0 = 2*x0+1
25 plt.scatter(x0,y0,color=\'b\')  #颜色设置为blue
26 
27 #plot出一条通过(x0,y0)这个点垂直于x轴的虚线
28 plt.plot([x0,x0],[y0,0],\'k--\',lw=2.5) #对应于(x0,y0)和(x0,y0)这两个点,两点确定一条直线,黑色虚线,线条宽度2.5
29 #将图表显示出来
30 plt.show()

 

 

 

继续添加代码,运行后发现报错如下:

ValueError: offset point is not a recognized coordinate

原因是:

 

 

 在test.py中定义如下:

 

 

 改正后正常运行,代码如下:

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 x = np.linspace(-3,3,50)
 5 y = 2*x+1
 6 
 7 plt.figure(num=1,figsize=(8,5),)
 8 plt.plot(x,y)
 9 
10 ax = plt.gca()
11 ax.spines[\'right\'].set_color(\'none\')
12 ax.spines[\'top\'].set_color(\'none\')
13 
14 #设置x轴
15 ax.xaxis.set_ticks_position(\'bottom\')
16 ax.spines[\'bottom\'].set_position((\'data\',0))
17 
18 #设置y轴
19 ax.yaxis.set_ticks_position(\'left\')
20 ax.spines[\'left\'].set_position((\'data\',0))
21 
22 #显示(x0,y0)这个点
23 x0 = 1
24 y0 = 2*x0+1
25 plt.scatter(x0,y0,color=\'b\')  #颜色设置为blue
26 
27 #plot出一条通过(x0,y0)这个点垂直于x轴的虚线
28 plt.plot([x0,x0],[y0,0],\'k--\',lw=2.5) #对应于(x0,y0)和(x0,y0)这两个点,两点确定一条直线,黑色虚线,线条宽度2.5
29 
30 #method 1
31 plt.annotate(r\'$2x+1=%s$\'%y0,xy=(x0,y0),xycoords=\'data\',xytext=(+30,-30),textcoords=\'offset points\',
32              fontsize=16,arrowprops=dict(arrowstyle=\'->\',connectionstyle=\'arc3,rad=.2\'))
33 
34 #将图表显示出来
35 plt.show()

运行结果:

 

 继续对上述代码进行改动:

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 x = np.linspace(-3,3,50)
 5 y = 2*x+1
 6 
 7 plt.figure(num=1,figsize=(8,5),)
 8 plt.plot(x,y)
 9 
10 ax = plt.gca()
11 ax.spines[\'right\'].set_color(\'none\')
12 ax.spines[\'top\'].set_color(\'none\')
13 
14 #设置x轴
15 ax.xaxis.set_ticks_position(\'bottom\')
16 ax.spines[\'bottom\'].set_position((\'data\',0))
17 
18 #设置y轴
19 ax.yaxis.set_ticks_position(\'left\')
20 ax.spines[\'left\'].set_position((\'data\',0))
21 
22 #显示(x0,y0)这个点
23 x0 = 1
24 y0 = 2*x0+1
25 plt.scatter(x0,y0,color=\'b\')  #颜色设置为blue
26 
27 #plot出一条通过(x0,y0)这个点垂直于x轴的虚线
28 plt.plot([x0,x0],[y0,0],\'k--\',lw=2.5) #对应于(x0,y0)和(x0,y0)这两个点,两点确定一条直线,黑色虚线,线条宽度2.5
29 
30 #method 1
31 plt.annotate(r\'$2x+1=%s$\'%y0,xy=(x0,y0),xycoords=\'data\',xytext=(+30,-30),textcoords=\'offset points\',
32              fontsize=16,arrowprops=dict(arrowstyle=\'->\',connectionstyle=\'arc3,rad=.2\'))
33 
34 #method 2
35 plt.text(-3.7,3,r\'$This\\ is\\ the\\ some\\ text.\\ \\mu\\ \\sigma_i\\ \\alpha_t$\',
36          fontdict={\'size\':16,\'color\':\'r\'})
37 #将图表显示出来
38 plt.show()

运行结果如下:

 

 最后得到目标图片!

 

以上是关于莫烦课程笔记总结之matplotlib——annotation标注的主要内容,如果未能解决你的问题,请参考以下文章

莫烦课程笔记总结之matplotlib——Subplot 分格显示

莫烦课程Batch Normalization 批标准化

tkinter笔记:scale 尺度 (莫烦python笔记)

tkinter 笔记:列表部件 listbox (莫烦python 笔记)

tkinter 笔记: radiobutton 选择按钮(莫烦python笔记)

tkinter 笔记 checkbutton 勾选项 (莫烦python笔记)