Python--Matplotlib库与数据可视化①--修改图像属性

起步

导入matplotlib:

import matplotlib.pyplot as plt

使用内部函数plot()来绘制图线

plt.plot(Close['2020'])

执行完代码图像未显示出来时,还需要用到show()方法。

plt.show()

默认方式过于简单而漏掉了很多信息,作如下补充

修改图像属性

1.坐标

1.1 更改坐标轴范围

假设-1和1表示买入和卖出,现绘制某一时间段买卖点:

plt.plot([1, 1, 0, 0, -1, 0, 1, 1, -1])

在这里插入图片描述

  • rcParams 是Matplotlib库中pyplot包绘图的参数字典,key为’axes.unicode_minus’的默认取值(value)为True,表示unicode的minus类型,有些字体对其兼容性支持不够,导致负号无法正常显示,现在将’axex.unicode_minus’的取值设为False,则可正常显示负号。

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)

重新绘制,效果如下图所示
在这里插入图片描述

1.2设定坐标标签与显示角度

  • 可以通过xticks()和yticks()函数设定坐标的标签。基本用法如下:
  • matplotlib.pyplot.xticks(location, lables)
  • matplotlib.pyplot.yticks(location, lables)
    location:指标签的位置,一般由浮点数或是证书组成的列表
    labels:表示坐标的标签,一般为与location等长的字符串列表
    rotation:控制标签与X轴正向的角度。
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度。

结果如图:
在这里插入图片描述

2.添加文本

2.1 添加标题

  • 添加标题可以通过pyplot包中的title()函数实现。
    matplotlib.pyplot,title(s, *args, **kwargs)
    参数s为str类型数据。
    参数loc:设定标题的显示位置。可选取值有:“counter”,“left”,“right”,分别表示位于坐标轴的中央、左边缘和右边缘。loc默认取值为"center"。
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('某股票买卖点曲线图')

2.2中文显示问题

默认情况下,图形中的中文为乱码形式,有两种方式可以解决matplotlib绘图中的中文显示问题。

  • 1.每次绘图前,通过代码更改参数。更改Matplotlib包中pyplot包的参数字(rcParams)字体的无衬线字体属性(font.sans-serif, 为参数字典的一个key)的取值(value),现将其设定为以’SimHei’为元素的数组形式。
plt.rcParams['font.sans-serif'] = ['SimHei']
  • 2.如果每次绘图前都要考虑中文显示问题和执行上边的代码,不免就有些麻烦,当参数行数较多时,可能会顾此失彼。为了一劳永逸,可以修改一下Matplotlib配置文件中相关绘图属性的取值。该具体操作不再过多赘述。此操作虽方便,但会降低代码的普适性,不便于日后交流,固应根据个人需求酌情采用。
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('某股票买卖点曲线图')

具体效果如图所示:
在这里插入图片描述

2.3 设定坐标轴标签

在图像中添加坐标轴标题可以直观地显示坐标轴代表的数据变量。X轴、Y轴的标签设定分别通过xlabel()和ylabel()函数来实现,这两个函数也位于pyplot包中。

基本语法

  • xlabel(‘a’)
  • ylabel(‘b’)
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('买卖点')

示例结果:
在这里插入图片描述

2.4 增加图形背景 grid

在Matplotlib包中,pyplot包内的grid()函数用于增加并设定图形的背景,函数的参数形式如下:

  • matplotlib.pyplot.grid(b=None,which=‘major’, axis=‘both’, **kwargs)
参数b:
  • 布尔数据类型,设定是否显示grid。默认为None,不显示。如需显示,则将B设定为True。
参数which:
  • 设定 分割标示线(tick) 的类型,取值为"major", “minor"或者"both”。
  • 默认为"major",表示以原本坐标轴分割标示线为准;
  • 若取值为"minor",则表示 进一步细分 坐标轴分割标示线,但是 分割标准要提前设定好。如果只是设定值为"minor",则图形不会显示grid。
  • "both"表示大小区间坐标轴分割线都有。
参数axis:
  • 制定绘制grid的坐标轴,取值为"both"(default), “x”, 或者"y"。both表示X轴和Y轴的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')

在这里插入图片描述

2.5 增加图例

  • 多条曲线显示在一张图中时,图例可以帮助我们区分识别不同的曲线。如对某股票的价格数据中,除了收盘价,开盘价也涵盖了市场中的很多信息,将收盘价与开盘价对比分析,可能会发现一些新的信息。
  • 图例的增加, 通过pyplot包中的**lengend()**函数实现。
    matplotlib.pyplot.lengend(*args, **kwargs)
    该函数常用到的一个参数是loc参数,用于设定图例在图中的位置。参数loc取值如表所示:
    参数loc取值表:
含义字符串类型值数字值
最适宜位置‘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()

结果如图所示:
在这里插入图片描述

3.多种线条属性

3.1线条的类型

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()

在这里插入图片描述

3.2图形的颜色

修改图形的颜色通过设定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()

结果如图所示:
在这里插入图片描述

3.3 点的形状类型

除了线条类型外,还可以设置数据点的形状。数据点形状通过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()

效果如图所示:
在这里插入图片描述

3.4 线条宽度

线条的宽度通过参数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()

效果如图所示:
在这里插入图片描述

  • 这里,将几个参数整合在一起为‘–rD’,表示线条类型为–,线条颜色为r,点的形状为D。

续:
Python–Matplotlib库与数据可视化②–常见图形的绘制(柱状图,直方图,饼图,箱线图)

Python–Matplotlib库与数据可视化③–Figures、Axes对象与多图绘制

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侯小啾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值