本笔记参考:
matplotlib Plotting Cookbook by Alexandre Devert
Plot types — Matplotlib 3.9.3 documentation
(尝试记录并不断完善matplotlib的使用方法笔记,为后面使用提供参考。)
标题
标题可以使用plt.title()实现,标题支持latex公式,不过需要安装late(完整的latex安装超过7个G,且大致需要一小时左右才能安装完毕。推荐使用miktex,这个安装包很小,需要用到包是其会自动下载。注意,安装miktex后latex文档编译显示其需要Pear,具体请参考网上其他内容。)使用latex公式时与文档中写法类似——公式写在美元符号之间,但要注意\需要使用\\来实现,也可以通过r标记,具体参考python字符串的内容。下面两种写法等价:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
plt.plot(x, y)
plt.title(r'Sine Plot $\sin^2(x)$')
plt.show()
也可以使用ax.set_title()实现
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Sine Plot $\\sin^2(x)$')
plt.show()
坐标轴标签
设置坐标轴的标签同样可以使用两种不同的方式完成(参考我的另一篇笔记,关于Matplotlib Apis的)。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
plt.plot(x, y)
plt.xlabel('x label')
plt.ylabel('y label')
plt.title(r'Sine Plot $\sin^2(x)$')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Sine Plot $\\sin^2(x)$')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
plt.show()
文本
文本可以使用plt.text()或者ax.text()实现(可参考另一篇关于api的笔记)。但需要注意,该函数中直接使用中文字符串会报错,需要进行一些设置。text函数还支持一个bbox参数(可选参数),该参数需要传入一个字典,来定义边界框的颜色等。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# 设置matplotlib的字体为一个支持中文的字体,例如SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False # 正常显示负号
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
box = {
'facecolor': 'b',
'edgecolor': 'm',
'boxstyle': 'round'
}
plt.plot(x, y)
plt.xlabel('x label')
plt.ylabel('y label')
plt.title(r'Sine Plot $\sin^2(x)$')
plt.text(3,0.6,'这是文本',verticalalignment='center',bbox=box)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# 设置matplotlib的字体为一个支持中文的字体,例如SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False # 正常显示负号
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
box = {
'facecolor': 'b',
'edgecolor': 'm',
'boxstyle': 'round'
}
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title('Sine Plot $\\sin^2(x)$')
ax.text(3,0.6,'这是文本',verticalalignment='center',bbox=box)
plt.show()
箭头
箭头可以使用plt.annotate()和ax.annotate()实现,如下:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# 设置matplotlib的字体为一个支持中文的字体,例如SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False # 正常显示负号
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
arrow_p = {
'facecolor': 'b',
'edgecolor': 'm',
'arrowstyle': 'fancy',
}
plt.plot(x, y)
plt.xlabel('x label')
plt.ylabel('y label')
plt.title(r'Sine Plot $\sin^2(x)$')
plt.annotate('箭头',xy=(3,0.6),xytext=(3,0.5),arrowprops=arrow_p)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# 设置matplotlib的字体为一个支持中文的字体,例如SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False # 正常显示负号
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
arrow_p = {
'facecolor': 'b',
'edgecolor': 'm',
'arrowstyle': 'fancy',
}
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title('Sine Plot $\\sin^2(x)$')
ax.annotate('箭头',xy=(3,0.6),xytext=(3,0.5),arrowprops=arrow_p)
plt.show()
图例
图例通过legend()函数实现(两种接口均可,下面给出plt接口的绘图方式)。图例的位置有参数loc控制。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
y_1 = np.sin(x)
plt.plot(x, y,label=r'$\sin^2 x$')
plt.plot(x, y_1,label=r'$\sin x$')
plt.legend(loc='lower left')
plt.show()
网格
网格由grid()实现,通过参数lw,ls,c等可选参数可以进行更细致的控制。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)**2
y_1 = np.sin(x)
plt.plot(x, y,label=r'$\sin^2 x$')
plt.plot(x, y_1,label=r'$\sin x$')
plt.legend(loc='lower left')
plt.grid(True)
plt.show()
线条
这部分目前我并不太熟悉具体操作方法,这里引用参考书中的一个例子:
标签:指南,plt,matplotlib,注释,ax,np,import,sin From: https://blog.csdn.net/Jay_Franklin/article/details/144431453import matplotlib.pyplot as plt N = 20 for i in range(N): plt.gca().add_line(plt.Line2D([0,i],[N-i,0])) plt.grid(True) plt.axis('scaled') plt.show()