9、10、11、12、13_添加标注 (Annotations)、添加网格线（Grid Lines）、显示中文字体、保存图形（saving Figures）、高质量矢量图输出

16 篇文章 2 订阅

9.添加标注 (Annotations)
10.添加网格线（Grid Lines）
11.显示中文字体
12.保存图形（saving Figures）
13.高质量矢量图输出

9.添加标注 (Annotations)

import numpy as np
print(3 * np.sin(3 * np.pi / 4))


2.121320343559643

import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(-2 * np.pi, 3 * np.pi, 70, endpoint=True)
F1 = np.sin(X)
F2 = 3 * np.sin(X)
ax = plt.gca()
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])
x = 3 * np.pi / 4
plt.scatter([x,],[3 * np.sin(x),], 50, color ='blue')
plt.annotate(r'$(3\sin(\frac{3\pi}{4}),\frac{3}{\sqrt{2}})$',
xy=(x, 3 * np.sin(x)),
xycoords='data',
xytext=(+20, +20),
textcoords='offset points',
fontsize=16,
arrowprops=dict(facecolor='blue'))
plt.plot(X, F1, label="$sin(x)$")
plt.plot(X, F2, label="$3 sin(x)$")
plt.legend(loc='lower left')
plt.show()


xycoordinates of the arrow tip
xytextcoordinates of the text location

‘figure points’Points from the lower left of the figure
‘figure pixels’Pixels from the lower left of the figure
‘figure fraction’Fraction of figure from lower left
‘axes points’Points from lower left corner of axes
‘axes pixels’Pixels from lower left corner of axes
‘axes fraction’Fraction of axes from lower left
‘data’Use the coordinate system of the object being annotated (default)
‘polar’(theta, r) if not native ‘data’ coordinates

arrowprops key描述
widthThe width of the arrow in points
shrinkFraction of total length to shrink from both ends
**kwargsany key for matplotlib.patches.Polygon, e.g., facecolor

import numpy as np
import matplotlib.pyplot as plt

X = np.linspace(-2 * np.pi, 3 * np.pi, 70, endpoint=True)
F1 = np.sin(X)
F2 = 3 * np.sin(X)
ax = plt.gca()
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])
x = 3 * np.pi / 4
plt.scatter([x, ], [3 * np.sin(x), ], 50, color='blue')
plt.annotate(r'$(3\sin(\frac{3\pi}{4}),\frac{3}{\sqrt{2}})$',
xy=(x, 3 * np.sin(x)),
xycoords='data',
xytext=(+20, +20),
textcoords='offset points',
fontsize=16,
plt.plot(X, F1, label="$sin(x)$")
plt.plot(X, F2, label="$3 sin(x)$")
plt.legend(loc='lower left')
plt.show()


10.添加网格线（Grid Lines）

import numpy as np
import matplotlib.pyplot as plt

def f(t):
return np.exp(-t) * np.cos(2 * np.pi * t)

def g(t):
return np.sin(t) * np.cos(1 / (t + 0.1))

t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
plt.plot(t1, g(t1), 'ro', t2, f(t2), 'k')
plt.grid(color='b', alpha=0.5, linestyle='dashed', linewidth=1.0)
plt.show()


11.显示中文字体

Matplotlib默认是不支持显示中文字符的。

Windows操作系统支持的中文字体和代码：

plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']


import matplotlib.pyplot as plt
# 在jupyter notebook 中，设置下面两行来显示中文
plt.rcParams['font.family'] = ['sans-serif']
# 在 PyCharm 中，只需要下面一行,‘STXingkai’：华文行楷
plt.rcParams['font.sans-serif'] = ['STXingkai']
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('日期', size=16)
plt.ylabel('摄氏度', size=16)
plt.title('温度变化', size=16)
plt.show()


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('日期', fontproperties='SimHei', size=16)
plt.ylabel('摄氏度', fontproperties='STXingkai', size=16)
plt.title('温度变化', fontproperties='SimHei', size=16)
plt.show()


12.保存图形（saving Figures）

savefig方法可用来保存图形到文件中:

fig.savefig(“filename.png”)

import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
plt.xlabel('Months')
plt.show()


import matplotlib.pyplot as plt
import matplotlib.image as mpimg
plt.imshow(img)


13.高质量矢量图输出

Jupyter Notebook中显示svg矢量图的设置： %config InlineBackend.figure_format = ‘svg’

%matplotlib inline
%config InlineBackend.figure_format = 'svg'
import matplotlib.pyplot as plt
# 在jupyter notebook 中，设置下面两行来显示中文
plt.rcParams['font.family'] = ['sans-serif']
# 在 PyCharm 中，只需要下面一行
plt.rcParams['font.sans-serif'] = ['SimHei']
days = list(range(1,9))
celsius_values = [25.6, 24.1, 26.7, 28.3, 27.5, 30.5, 32.8, 33.1]
fig = plt.figure()
plt.plot(days, celsius_values)
plt.xlabel('日期', size=16)
plt.ylabel('摄氏度', size=16)
plt.title('温度变化', size=16)
plt.show()
fig.savefig('celsius_degrees.svg')

• 0
点赞
• 1
收藏
觉得还不错? 一键收藏
• 打赏
• 0
评论
04-08 3007
10-09 2067
06-03 5013

“相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。