Line plot
a. 一个图表元素
import matplotlib.pyplot as plt
#x横坐标上点的数值
x=[1,2,3,4]
#y纵坐标上点的数值
y=[1,4,9,16]
plt.plot(x,y)
#显示图像
plt.show()
plt.plot(x,y,color='r',marker='o',linestyle='dashed')
plt.axis([0,6,0,20]) #横轴最大6,纵轴最大20
plt.show()
b. 多个元素,使用setp设置多组元素
import numpy as np
t=np.arange(0,5,0.2)
t
x1=y1=t
x2=x1
y2=t**2
x3=x1
y3=t**3
#使用plot绘制线条
linesList=plt.plot(x1,y1,x2,y2,x3,y3)
#使用setp方法设置多线条属性
plt.setp(linesList,color='r')
plt.show()
c. 添加图表元素
x=[1,2,3,4]
y=[1,4,9,16]
plt.plot(x,y)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('标题')
plt.annotate('注释',xy=(2,5),xytext=(2,10),arrowprops=dict(facecolor='black',shrink=0.01),)
plt.show()
e. 股价分析图
#导入包
import pandas as pd
from pandas_datareader import data
#字典定义股价名称及编号
gafataDict={'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB',
'苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700.hk'}
# 获取哪段时间范围的股票数据
start_date = '2017-01-01'
end_date = '2018-01-01'
#查看前5行数据
babaDf.head()
#(get_data_yahoo)获取6家股票数据
babaDf=data.get_data_yahoo(gafataDict['阿里巴巴'],start_date, end_date)
googDf=data.get_data_yahoo(gafataDict['谷歌'],start_date, end_date)
amazDf=data.get_data_yahoo(gafataDict['亚马逊'],start_date, end_date)
fbDf=data.get_data_yahoo(gafataDict['Facebook'],start_date, end_date)
applDf=data.get_data_yahoo(gafataDict['苹果'],start_date, end_date)
txDf=data.get_data_yahoo(gafataDict['腾讯'],start_date, end_date)
babaDf.plot(x=babaDf.index,y='Close')
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('2017年阿里巴巴股价走势')
#显示网格
plt.grid(True)
#显示图形
plt.show()
babaDf.plot(x='Volume',y='Close',kind='scatter')
#x坐标轴文本
plt.xlabel('成交量')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('成交量和股价')
#显示网格
plt.grid(True)
#显示图形
plt.show()
babaDf.corr()系数:0.415 呈线性相关
#绘制谷歌的画纸1
ax1=googDf.plot(x=googDf.index,y='Close')
#通过指定画纸ax1,在同一张画纸上绘图
#亚马逊
amazDf.plot(ax=ax1,x=amazDf.index,y='Close')
fbDf.plot(ax=ax1,x=fbDf.index,y='Close')
#苹果
applDf.plot(ax=ax1,x=applDf.index,y='Close')
#阿里巴巴
babaDf.plot(ax=ax1,x=babaDf.index,y='Close')
#腾讯
txDf.plot(ax=ax1,x=txDf.index,y='Close_dollar')
#x坐标轴文本
plt.xlabel('时间')
#y坐标轴文本
plt.ylabel('股价(美元)')
#图片标题
plt.title('2018年GAFATA股价累计涨幅比较')
#显示网格
plt.grid(True)
plt.show()
#6家公司股票收盘价平均值
gafataMeanList=[googDf['Close'].mean(),#谷歌
amazDf['Close'].mean(),#亚马逊
fbDf['Close'].mean(),#Facebook
applDf['Close'].mean(),#苹果
babaDf['Close'].mean(),#阿里巴巴
txDf['Close_dollar'].mean()#腾讯
]
#创建pandas一维数组Series
gafataMeanSer=pd.Series(gafataMeanList,
index=['谷歌',
'亚马逊',
'Facebook',
'苹果',
'阿里巴巴',
'腾讯'])
gafataMeanSer.plot(kind='bar',label='GAFATA')
#图片标题
plt.title('2017年GAFATA股价平均值')
#x坐标轴文本
plt.xlabel('公司名称')
#y坐标轴文本
plt.ylabel('股价平均值(美元)')
plt.grid(True)
plt.show()
#存放6家公司的收盘价
closeDf=pd.DataFrame()
#合并6家公司的收盘价
closeDf=pd.concat([closeDf,googDf['Close'],#谷歌
amazDf['Close'],#亚马逊
fbDf['Close'],#Facebook
applDf['Close'],#苹果
babaDf['Close'],#阿里巴巴
txDf['Close_dollar']#腾讯
],axis=1)
#重命名列名为公司名称
closeDf.columns=['谷歌','亚马逊','Facebook','Facebook','阿里巴巴','阿里巴巴']
#箱线图
closeDf.plot(kind='box')
plt.grid(True)
plt.show()