python 用matplotlib画一个折线图

2019-11-01 09:20:25 浏览数 (2)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_44580977/article/details/101992970

函数式绘图例程
代码语言:javascript复制
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(刻度注释)等对象元素。对象隶属关系如下所示:

对象式绘图中各个对象在图中的位置关系如下图所示:

代码语言:javascript复制
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()

0 人点赞