画折线
import matplotlib.pyplot as plt
plt.plot([1,2,3,4],[5,4,2,8])
plt.plot([1,2,3,4],[6,5,3,9],marker="o")
plt.show()
画点
plt.plot([1,2,3,4],[5,4,2,8],"o")
plt.show()
画柱状图
#画柱状图
data=[20,50,66,89]
labels=['A','B','C','D']
#指定x轴是1,2,3,4。y轴为数据值
plt.bar(np.arange(len(data)),data)
#将x轴替换成标签
plt.xticks(np.arange(len(data)),labels)
plt.show()
画饼图
#画饼图,指定标签abcd,显示数据值加百分号保留2位小数,第1和第3个数据往外突出
plt.pie([10,20,30,40],labels=["a","b","c","d"],autopct="%.2f%%",explode=[0.1,0,0.2,0])
plt.axis("equal")
plt.show()
画布模式,画多个图
fig=plt.figure()
#将画布分为2行2列,当前占用第1个视图
plt1=fig.add_subplot(2,2,1)
plt1.plot([1,2,3,4],[5,6,7,8])
#将画布分为2行2列,当前占用第2个视图
plt2=fig.add_subplot(2,2,2)
plt2.plot([2,3,4,5],[1,5,7,2])
#将画布分为2行2列,当前占用第3个视图
plt3=fig.add_subplot(2,2,3)
plt3.plot([2,3,4,5],[2,5,4,2])
plt.show()
添加注释
plt.plot([1,2,3,4],[5,4,2,8],label="line1")
plt.plot([1,2,3,4],[6,5,3,9],marker="o",label="line2")
#x轴名称
plt.xlabel("x label")
#y轴名称
plt.ylabel("y label")
#标题
plt.title("title")
#左上角的图例,注意必须在plot函数里指定了label后才会显示
plt.legend()
plt.show()
绘制K线图
data数据如下,从excel读取,总共一个月的数据:
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.finance as mpf
import matplotlib.ticker as ticker
# 定义日期标签转换函数,用于将x轴转化成日期
def Format_func(x, pos):
return data.index[pos].strftime('%Y-%m-%d')
#增加一列index,值为dataframe的日期索引转化为时间戳
data['index'] = date2num(data.index.to_pydatetime())
#增加完数据如下
>>> close high low open volume index
2020-04-22 19.29 19.34 18.80 18.96 29245502.0 737537.0
2020-04-23 18.89 19.50 18.86 19.47 35230658.0 737538.0
.........
#candlestick_ochl函数需要传入一个数组,第1列为时间戳,后面几列以ochl的顺序
quotes = data[['index','open','close','high','low']].values
#这里使用了dataframe的花式索引筛选数据,然后.values转化为数组,数据如下
>>> array([[7.37537e+05, 1.89600e+01, 1.92900e+01, 1.93400e+01, 1.88000e+01],
[7.37538e+05, 1.94700e+01, 1.88900e+01, 1.95000e+01, 1.88600e+01],...)
#开启画布模式
fig=plt.figure()
#分成1行1列,占用第1个视图
ax1=fig.add_subplot(1,1,1)
ax1.set_title(symbol)
ax1.set_ylabel('价格')
#设置x轴显示为日期,格式用上面定义的函数进行格式化
ax1.xaxis.set_major_formatter(ticker.FuncFormatter(Format_func))
#显示表格
ax1.grid(True)
#传入参数
fin.candlestick_ochl(ax1,quotes,colordown='g', colorup='r',width=0.2)
#x轴的标识旋转30度
plt.xticks(rotation=30)
plt.show()