例11-1 给定11个点坐标,绘制简单折线图 (x,y)
import numpy as np
import matplotlib.pyplot as plt # 引入绘图库
x = np.arange(11) # 从0开始,步长为1 的11个整数
y = np.array([0.15,0.16,0.14,0.17,0.12,0.16,0.1,0.08,0.05,0.07,0.06]) # 取11个数
plt.plot(x, y, color = 'green', marker='o') # 绘制11个点的折线图,红色、点型
plt.show()
例11-2 绘制散点图 y = sin(x)
import matplotlib.pyplot as plt ; import numpy as np
x = np.linspace(0, 2*np.pi, 30) # 将[0,2*PI]等分为30份的一维数组
y = np.sin(x)
plt.scatter(x, y, marker='.', color='green') # marker 点型, 颜色color为blue
plt.show()
例11-3 绘制4个子图,如图所示
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 100)
fig = plt.figure(figsize=(8,6),dpi=80)
ax1 = fig.add_subplot(2,2,1) # (2,2)表示将画布分成2行,2列,可画4个子图
ax1.plot(x, x)
ax1.legend(['y=x'])
ax2 = fig.add_subplot(2,2,2) # 这是第2个子图
ax2.plot(x, -x,'r') ; ax2.legend(['y=-x'])
ax3 = fig.add_subplot(2,2,3) # 这是第3个子图
ax3.plot(x, x ** 2,'b')
ax3.legend(['y=x*x'])
ax4 = fig.add_subplot(2,2,4) # 这是第4个子图
ax4.plot(x, np.log(x+1e-5),'g')
ax4.legend(['y=log(x)'],loc='lower right') # 图例在右下方
plt.show()
第四个图如果将ax4.plot(x, np.log(x+1e-5),'g')换成ax4.plot(x, np.log(x),'g')即与示例图一致,但会报divide by zero encountered in log的错误,因为log在负数域计算为无穷小了,导致第四张图无法加载y<0的部分。x+1e-5代表将其转变为高精度浮点数,能够显示的区域就会变大到现在的样子。
例11-4 用画布的各种设置,绘制折线图:y = sin(x),z = cos(x)。设置包括:
(1)图片的大小、标题title、图例legend、字体大小fontsize
(2)坐标轴的4个属性:刻度xticks、范围xlim、标签xlabel、字体大小fontsize
(3)折线图的6个属性:颜色color、点型marker、点型大小marksize、 线型linestyle 、线宽linewidth、透明度alpha
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
x = np.arange(0,2*np.pi,0.1)
y = np.sin(x)
f = plt.figure(figsize=(8,4),dpi=80) # 画布大小:宽8英寸,高4英寸
f.set_facecolor((0.92,0.92,0.96)) # 设置坐标轴颜色
plt.title('正弦、余弦函数图形',fontsize=12) # 标题 ,字体大小:12
plt.xlabel('x 变量',fontsize=12) # x轴标签
plt.ylabel('y 变量',fontsize=12)
plt.xlim((0,6.6)) # 确定x轴范围
plt.ylim((-1,1))
plt.xticks(np.arange(0,6.6,0.4))