import numpy as np
# 生成一个 等差数列 ,从0.5 ~ 7.5之间包括 0.5,7.5有1000个元素的数组
x = np.linspace(0.5, 7.5, 1000)
# 对ndarray类型x 进行矢量运算
y = np.sin(x)
import matplotlib.pyplot as plt
# 创建图形并设置大小
plt.figure(figsize=(12, 8))
# lw:line width,用于设置线条宽度
# '--g':结合linestyle和color,线条使用虚线,颜色使用绿色
# label:设置线条的标签为'sin(x)'
plt.plot(x, y, '--g', lw=2, label='sin(x)')
# 调整坐标轴刻度范围
plt.xlim(0, 10)
plt.ylim(-1.5, 1.5)
# 设置轴标签
plt.xlabel('X axis')
plt.ylabel('Y axis')
# 设置坐标轴标签
# 坐标轴分成 0-10 公差为2 五组,每组对应的标签为数组各元素
# rotation 为标签 斜度 (防止标签重叠
# 字符串前面加 u 为的是使用unionCode 编码防止乱码
plt.xticks(np.arange(0,10,2),['2015-07-02','2015-08-02','2015-09-02','2015-10-02','2015-11-02'],\
rotation=45)
plt.yticks(np.arange(-1,1.5,1),[u'最小值',u'零值',u'最大值'])
# 设置网格线 图形中的网格线
# matplotlib中grid()函数用于设置图形中的网格线。
# 其中linestyle用于设置网格的线条类型,
# color用于设置网格的线条颜色。
plt.grid(True, ls=':', color='r', alpha=0.5)
# 设置标题
plt.title(u"Functional Programming")
# 添加图例 (图例就是解释 线条信息 在本例程中 图例就是 --sin(x)
# plt.legend(handles=[ln2, ln1], labels=['Android基础', 'Java基础'],
# loc='lower right')
plt.legend(loc='upper right')
# np.pi 常量 Π 3.14...
# 添加sin(x)的最高点注释
plt.annotate('max sell',
xy = (np.pi/2, 1),#箭头指向点的坐标
xytext = (np.pi/2, 1.3),#注释文本左端的坐标
weight = 'regular',#注释文本的字体粗细风格,bold是粗体,regular是正常粗细
color = 'g',#注释文本的颜色
fontsize = 15,#注释文本的字体大小
arrowprops = {
'arrowstyle': '->',#箭头类型
'connectionstyle': 'arc3',#连接类型
'color': 'g'#箭头颜色
})
# 添加sin(x)的最低点注释
plt.annotate('min buy',
xy = (np.pi*3/2, -1),
xytext = (np.pi*3/2, -1.3),
weight = 'regular',
color = 'r',
fontsize = 15,
arrowprops = {
'arrowstyle': '->',
'connectionstyle': 'arc3',
'color': 'r'
})
# 显示图形
plt.show()
我们先了解下图像中对象隶属关系。在matplotlib中,整个图像为一个Figure对象,所有元素依附于Figure对象中。在Figure对象中可以包含一个或者多个Axes对象。每个Axes对象各自拥有坐标系统的绘图区域,包含各自的Title(标题)、Axis(坐标轴)、Label(坐标轴标注)、Tick(刻度线)、Tick Label(刻度注释)等对象元素。对象隶属关系如下所示:
对象式绘图中各个对象在图中的位置关系如下图所示:
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0.5, 7.5, 1000)
y = np.sin(x)
#pyplot模块中的figure()函数创建名为fig的Figure对象
fig = plt.figure(figsize=(12, 8))
#在Figure对象中创建一个Axes对象,每个Axes对象即为一个绘图区域
ax = fig.add_subplot(111)
# sin(x)图
ax.plot(x, y, '--g', lw=2, label='sin(x)')
# 调整坐标轴范围
ax.set_xlim(0, 10)
ax.set_ylim(-1.5, 1.5)
# 设置坐标轴标签
ax.set_xticks(np.arange(0,10,2))
ax.set_yticks(np.arange(-1,1.5,1))
ax.set_xticklabels(['2015-07-02','2015-08-02','2015-09-02','2015-10-02','2015-11-02'],\
rotation=45,fontsize=15)
ax.set_yticklabels([u'最小值',u'零值',u'最大值'],fontsize=15)
# 设置轴标签
ax.set_xlabel('X axis',fontsize=15)
ax.set_ylabel('Y axis',fontsize=15)
# 设置网格线
ax.grid(True, ls=':', color='r', alpha=0.5)
# 设置标题
ax.set_title(u"Functional Programming",fontsize=25)
# 添加图例
ax.legend(loc='upper right',fontsize=15)
# 添加sin(x)的最高点注释
ax.annotate('max sell',
xy = (np.pi/2, 1),#箭头指向点的坐标
xytext = (np.pi/2, 1.3),#注释文本左端的坐标
weight = 'regular',#注释文本的字体粗细风格,bold是粗体,regular是正常粗细
color = 'g',#注释文本的颜色
fontsize = 15,#注释文本的字体大小
arrowprops = {
'arrowstyle': '->',#箭头类型
'connectionstyle': 'arc3',#连接类型
'color': 'g'#箭头颜色
})
# 添加sin(x)的最低点注释
ax.annotate('min buy',
xy = (np.pi*3/2, -1),
xytext = (np.pi*3/2, -1.3),
weight = 'regular',
color = 'r',
fontsize = 15,
arrowprops = {
'arrowstyle': '->',
'connectionstyle': 'arc3',
'color': 'r'
})
# 显示图形
plt.show()