python可视化学习(十三)面积图

面积图
作用
#面积图:不仅可以强调波峰与地谷,还可以强调高点与低点持续时间,持续时间越长,
#面积的函数
plt_fill_between
函数功能:填充两条水平曲线之间的区域
x:定义x轴
y1,y2:定义两条曲线的y轴的坐标
where:定义被填充o的区域
interpolate:控制交叉点位置的填充(仅在设定where并且两条曲线相交时起作用)

#认识数据集##
df=pd.read_csv('economics.csv',parse_dates=['date'])
#parse_datasd的作用是将字符串序列转换为日期序列
df.head()

python可视化学习(十三)面积图_第1张图片
几种日期转化的方法

df1=pd.read_csv('economics.csv')
df1.info()

python可视化学习(十三)面积图_第2张图片
python可视化学习(十三)面积图_第3张图片
python可视化学习(十三)面积图_第4张图片

#准备绘图所需要的数据与年度收益率有关的是个人储蓄率(psavert)
#数据较多,选用了100行
df=df[:100]
df.psavert.values#提取特征
df.head()

python可视化学习(十三)面积图_第5张图片
python可视化学习(十三)面积图_第6张图片

plt.plot(df.psavert.values)

python可视化学习(十三)面积图_第7张图片

#计算收益后减去前
income=df.psavert.diff().fillna(0)
#计算月度收益率(收益/本金 =(后-前)/前)
re=(income/df.psavert.shift(1)).fillna(0)*100 #shift 向后偏移一个
#绘制目标图像
plt.figure(figsize=(14,8),dpi=60)
#绘制面积图
plt.fill_between(range(df.shape[0]),re,0,where=re>0,color='g',interpolate=True,alpha=0.7)
plt.fill_between(range(df.shape[0]),re,0,where=re<=0,color='r',interpolate=True,alpha=0.7)

python可视化学习(十三)面积图_第8张图片

#装饰,修改横坐标的刻度
y=df.date.dt.year
print(y)
![在这里插入图片描述](https://img-blog.csdnimg.cn/c1fde445f22342babc791adcdc575d74.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAZmVpd2VueWFuZw==,size_10,color_FFFFFF,t_70,g_se,x_16)

python可视化学习(十三)面积图_第9张图片
python可视化学习(十三)面积图_第10张图片
python可视化学习(十三)面积图_第11张图片
python可视化学习(十三)面积图_第12张图片
python可视化学习(十三)面积图_第13张图片

#绘制目标图像
plt.figure(figsize=(14,8),dpi=60)
#绘制面积图
plt.fill_between(range(df.shape[0]),re,0,where=re>0,color='g',interpolate=True,alpha=0.7)
plt.fill_between(range(df.shape[0]),re,0,where=re<=0,color='r',interpolate=True,alpha=0.7)
#修改横坐标的刻度
xtickslabel=[str(m)[:3].upper()+'-'+str(y) for y,m in zip(y,m)][::6]
plt.xticks(range(df.shape[0])[::6],xtickslabel,rotation=90,fontsize=12)
#添加装饰
plt.title('month economics return',fontsize=20)
plt.ylabel('monthly return %')
plt.ylim(-35,35)
plt.xlim(1,100)
plt.grid(alpha=.5);

python可视化学习(十三)面积图_第14张图片

#绘制目标图像
plt.figure(figsize=(14,8),dpi=60)
#绘制面积图
plt.fill_between(range(df.shape[0]),re,0,where=re>0,color='g',interpolate=True,alpha=0.7)
plt.fill_between(range(df.shape[0]),re,0,where=re<=0,color='r',interpolate=True,alpha=0.7)
#修改横坐标的刻度
xtickslabel=[str(m)[:3].upper()+'-'+str(y) for y,m in zip(y,m)][::6]
plt.xticks(range(df.shape[0])[::6],xtickslabel,rotation=90,fontsize=12)
#添加注释
plt.annotate('peak \n1975',xy=(94,22),xytext=(85,27),color='w',fontsize=15,
             bbox=dict(boxstyle='square',fc='firebrick')
             ,arrowprops=dict(fc='steelblue',shrink=0.05)
)
#添加装饰
plt.title('month economics return',fontsize=20)
plt.ylabel('monthly return %')
plt.ylim(-35,35)
plt.xlim(1,100)
plt.grid(alpha=.5);

python可视化学习(十三)面积图_第15张图片
总结:知识点关于日期的改写,与zip的调用

你可能感兴趣的:(python可视化学习,python,开发语言,python)