import matplotlib.pyplot as plt
plt.plot(Close['2020'])
执行完代码图像未显示出来时,还需要用到show()方法。
plt.show()
默认方式过于简单而漏掉了很多信息,作如下补充
假设-1和1表示买入和卖出,现绘制某一时间段买卖点:
plt.plot([1, 1, 0, 0, -1, 0, 1, 1, -1])
plt.rcParams[‘axes.unicode_minus’] = False
上图默认以-1和1为y轴坐标的最小指和最大值。如要调大坐标范围,则通过设定xlim()和ylim()来实现。xlim()函数用来调节X轴的范围,ylim用来调节Y轴的范围。
plt.plot([1, 1, 0, 0, -1, 0, 1, 1, -1])
plt.ylim(-1.5,1.5)
plt.plot([1, 1, 0, 0, -1, 0, 1, 1, -1])
plt.ylim(-1.5,1.5)
plt.xticks(range(9), \
['2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', \
'2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', \
'2015-02-09'], rotation=45)
# 这里把标X轴签与与Y轴正向的夹角设成了45度。
plt.rcParams['axes.unicode_minus'] = False
plt.plot([1, 1, 0, 0, -1, 0, 1, 1, -1])
plt.ylim(-1.5,1.5)
plt.xticks(range(9), \
['2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', \
'2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', \
'2021-02-09'], rotation=45)
plt.title('某股票买卖点曲线图')
默认情况下,图形中的中文为乱码形式,有两种方式可以解决matplotlib绘图中的中文显示问题。
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot([1, 1, 0, 0, -1, 0, 1, 1, -1])
plt.ylim(-1.5,1.5)
plt.xticks(range(9), \
['2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', \
'2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', \
'2021-02-09'], rotation=45)
plt.title('某股票买卖点曲线图')
在图像中添加坐标轴标题可以直观地显示坐标轴代表的数据变量。X轴、Y轴的标签设定分别通过xlabel()和ylabel()函数来实现,这两个函数也位于pyplot包中。
基本语法
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot([1, 1, 0, 0, -1, 0, 1, 1, -1])
plt.ylim(-1.5,1.5)
plt.xticks(range(9), \
['2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', \
'2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', \
'2021-02-09'], rotation=45)
plt.title('某股票买卖点曲线图')
plt.xlabel('日期')
plt.ylabel('买卖点')
在Matplotlib包中,pyplot包内的grid()函数用于增加并设定图形的背景,函数的参数形式如下:
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot([1, 1, 0, 0, -1, 0, 1, 1, -1])
plt.ylim(-1.5,1.5)
plt.xticks(range(9), \
['2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', \
'2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', \
'2021-02-09'], rotation=45)
plt.title('某股票买卖点曲线图')
plt.xlabel('日期')
plt.ylabel('买卖点')
plt.grid(True,axis='y')
含义 | 字符串类型值 | 数字值 |
---|---|---|
最适宜位置 | ‘best’ | 0 |
右上角 | ‘upper right’ | 1 |
左上角 | ‘upper left’ | 2 |
左下角 | ‘lower left’ | 3 |
右下角 | ‘lower right’ | 4 |
右侧 | ‘right’ | 5 |
左侧中间 | ‘center left’ | 6 |
右侧中间 | ‘center right’ | 7 |
下方中间 | ‘lower center’ | 8 |
上方中间 | ‘upper center’ | 9 |
中间 | ‘center’ | 10 |
该函数成功增加图例的前提是在绘制图形时,要为图形设定lebel,lebel的值就是图例的文本内容。
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot([5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31], label = '收盘价')
plt.plot([5.09, 5.13, 5.16, 5.12, 5.09, 5.25, 5.16, 5.20, 5.25], label = '收盘价')
plt.xticks(range(9), \
['2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', \
'2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', \
'2021-02-09'], rotation=45)
plt.title('某股票开盘价&收盘价时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True,axis='y')
plt.legend()
plot()函数中的linestyle参数用于设定曲线的类型。为了书写方便,有时会用ls代替linestyle, 该参数的主要取值如表所示:
线条类型可能取值表
类型 | 名称取值 | 符号取值 |
---|---|---|
实线 | ‘solid’ | ‘-’ |
虚线 | ‘dashed’ | ‘—’ |
线点 | ‘dashdot’ | ‘-.’ |
点线 | ‘dotted’ | ‘:’ |
不画线 | ‘None’ | ‘’ |
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot([5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31], label = '收盘价', linestyle='solid')
plt.plot([5.09, 5.13, 5.16, 5.12, 5.09, 5.25, 5.16, 5.20, 5.25], label = '收盘价', ls='-.')
plt.xticks(range(9), \
['2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', \
'2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', \
'2021-02-09'], rotation=45)
plt.title('某股票开盘价&收盘价某时间序列内时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True,axis='y')
plt.legend()
修改图形的颜色通过设定plot()的color参数来实现,color参数也可以简写为c。颜色的取值有多种方式指定,最常用的是直接设定颜色的名称或颜色名称的简写,也可以通过RGB数组(比如(1,1,0)等其他方式设定)。
主要color名称及其简写:
颜色名称 | 简写 |
---|---|
‘red’ | ‘r’ |
‘black’ | ‘k’ |
‘blue’ | ‘b’ |
‘cyan’ | ‘c’ |
‘yellow’ | ‘y’ |
‘white’ | ‘w’ |
‘green’ | ‘g’ |
代码示例:
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot([5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31], c='r', label = '收盘价', linestyle='solid')
plt.plot([5.09, 5.13, 5.16, 5.12, 5.09, 5.25, 5.16, 5.20, 5.25], c='b', label = '收盘价', ls='-.')
plt.xticks(range(9), \
['2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', \
'2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', \
'2021-02-09'], rotation=45)
plt.title('某股票开盘价&收盘价某时间序列内时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True,axis='y')
plt.legend()
除了线条类型外,还可以设置数据点的形状。数据点形状通过maker参数来设定。maker参数取值有很多,如表所示:
点的形状marker的部分值表
形状含义 | 英文含义(description) | 符号取值(marker) |
---|---|---|
点 | point | ‘.’ |
圆圈 | circle | ‘o’ |
向下三角形 | triangle_down | ‘v’ |
向上三角形 | ‘triangle_up’ | ‘^’ |
向左三角形 | ‘triangle_left’ | ‘<’ |
向右三角形 | ‘triangle_right’ | ‘>’ |
正方形 | square | ‘s’ |
五边形 | pentagon | ‘p’ |
六边形 | hexagon1 | ‘h’ |
加号 | plus | ‘+’ |
叉号 | x | ‘x’ |
钻石 | diamond | ‘D’ |
星号 | star | ‘*’ |
竖线 | vline | ‘|’ |
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot([5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31], marker='o', c='r', label = '收盘价', linestyle='solid')
plt.plot([5.09, 5.13, 5.16, 5.12, 5.09, 5.25, 5.16, 5.20, 5.25],marker='*', c='b', label = '收盘价', ls='-.')
plt.xticks(range(9), \
['2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', \
'2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', \
'2021-02-09'], rotation=45)
plt.title('某股票开盘价&收盘价某时间序列内时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True,axis='both')
plt.legend()
线条的宽度通过参数linewidth来设定。参数linewidth也可以简写成lw。
代码示例:
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot([5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31], '--rD', label = '收盘价', linewidth=2)
plt.plot([5.09, 5.13, 5.16, 5.12, 5.09, 5.25, 5.16, 5.20, 5.25],'--b>', label = '收盘价', lw=10)
plt.xticks(range(9), \
['2021-02-01', '2021-02-02', '2021-02-03', '2021-02-04', \
'2021-02-05', '2021-02-06', '2021-02-07', '2021-02-08', \
'2021-02-09'], rotation=45)
plt.title('某股票开盘价&收盘价某时间序列内时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True,axis='both')
plt.legend()