本文展示Python中最基本的可视化工具Matplotlib和Seaborn的用法
1.导入库和常规设置
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
from datetime import datetime
import os
os.chdir(r'file_path')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
sns.set(font='SimHei') # 解决Seaborn中文显示问题
# 自定义常用颜色
r_hex = '#dc2624' # red, RGB = 220,38,36
dt_hex = '#2b4750' # dark teal, RGB = 43,71,80
tl_hex = '#45a0a2' # teal, RGB = 69,160,162
r1_hex = '#e87a59' # red, RGB = 232,122,89
tl1_hex = '#7dcaa9' # teal, RGB = 125,202,169
g_hex = '#649E7D' # green, RGB = 100,158,125
o_hex = '#dc8018' # orange, RGB = 220,128,24
tn_hex = '#C89F91' # tan, RGB = 200,159,145
g50_hex = '#6c6d6c' # grey-50, RGB = 108,109,108
bg_hex = '#4f6268' # blue grey, RGB = 79,98,104
g25_hex = '#c7cccf' # grey-25, RGB = 199,204,207
### 2.认识画图元素
#### 2.1四大容器
四大容器:
Figure → Axes → Axis → Ticks
图 → 坐标系 → 坐标轴 → 刻度
在坐标轴和刻度上添加标签
在坐标系中添加线、点、网格、图例和文字
在图中添加图例
要画出一幅有内容的图,需要在容器里添加基础元素比如线 (line), 点(marker), 文字 (text), 图例 (legend), 网格 (grid), 标题 (title), 图片 (image) 等,具体来说
画一条线,用 plt.plot() 或 ax.plot()
画个记号,用 plt.scatter() 或 ax.scatter()
添加文字,用 plt.text() 或 ax.text()
添加图例,用 plt.legend() 或 ax.legend()
添加图片,用 plt.imshow() 或 ax.imshow()
from PIL import Image
plt.figure()
plt.xticks([]), plt.yticks([])
im = np.array(Image.open('you_picture_path'))
plt.imshow(im)
plt.show()
2.2 两种推荐画法
两种生成坐标系的推荐代码
第一种:同时生成图和坐标系
fig, ax = plt.subplots()
第二种:先生成图,再添加坐标系
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
3.Matplotlib画图实操
3.1导入数据
data1 = pd.read_csv( 'S&P500.csv',
index_col=0,
parse_dates=True,
dayfirst=True )
data1.head(3).append(data1.tail(3))
Open
High
Low
Close
Adj Close
Volume
Date
1950-01-03
16.660000
16.660000
16.660000
16.660000
16.660000
1260000
1950-01-04
16.850000
16.850000
16.850000
16.850000
16.850000
1890000
1950-01-05
16.930000
16.930000
16.930000
16.930000
16.930000
2550000
2019-04-22
2898.780029
2909.510010
2896.350098
2907.969971
2907.969971
2997950000
2019-04-23
2909.989990
2936.310059
2908.530029
2933.679932
2933.679932
3635030000
2019-04-24
2934.000000
2936.830078
2926.050049
2927.250000
2927.250000
3448960000
spx = data1[['Adj Close']].loc['2007-01-01':'2010-01-01']
spx.head(3).append(spx.tail(3))
Adj Close
Date
2007-01-03
1416.599976