莫烦课程笔记总结之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 分格显示
tkinter笔记:scale 尺度 (莫烦python笔记)
tkinter 笔记:列表部件 listbox (莫烦python 笔记)