2. Matplotlib绘图基础
问题:CentOS下没有图片生成,改为Windows下Anaconda IDE。
2.1 最著名的Python绘图库,主要用于二维绘图:
2.1.1 画图质量高
2.1.2 方便快捷的绘图模块:
绘图API -- pyplot模块
集成库 -- pylab模块(包含Numpy和pyplot中的常用函数)
2.2 心型曲线绘制:http://matplotlib.org/examples/shapes_and_collections/path_patch_demo.html
# -*- coding: utf-8 -*- """ Demo of a PathPatch object. """ import matplotlib.path as mpath import matplotlib.patches as mpatches import matplotlib.pyplot as plt fig, ax = plt.subplots() Path = mpath.Path path_data = [ (Path.MOVETO, (1.58, -2.57)), (Path.CURVE4, (0.35, -1.1)), (Path.CURVE4, (-1.75, 2.0)), (Path.CURVE4, (0.375, 2.0)), (Path.LINETO, (0.85, 1.15)), (Path.CURVE4, (2.2, 3.2)), (Path.CURVE4, (3, 0.05)), (Path.CURVE4, (2.0, -0.5)), (Path.CLOSEPOLY, (1.58, -2.57)), ] codes, verts = zip(*path_data) path = mpath.Path(verts, codes) patch = mpatches.PathPatch(path, facecolor='r', alpha=0.5) ax.add_patch(patch) # plot control points and connecting lines x, y = zip(*path.vertices) line, = ax.plot(x, y, 'go-') ax.grid() ax.axis('equal') plt.show()
2.2 将Cocacola近一年来股票收盘价的月平均价绘制成折线图,散点图,直方图(括号中参数为列表)
from matplotlib.finance import quotes_historical_yahoo_ochl from datetime import date, datetime import time import pandas as pd import matplotlib.pyplot as plt today = date.today() start = (today.year-1, today.month, today.day) quotes = quotes_historical_yahoo_ochl('KO', start, today) fields = ['date','open','close','high','low','volume'] list1 = [] for i in range(0,len(quotes)): x = date.fromordinal(int(quotes[i][0])) y = datetime.strftime(x,'%Y-%m-%d') list1.append(y) #print(list1) quoteskodf = pd.DataFrame(quotes, index = list1, columns = fields) quoteskodf = quoteskodf.drop(['date'], axis = 1) #print(quotesdf) listtemp = [] for i in range(0,len(quoteskodf)): temp = time.strptime(quoteskodf.index[i],"%Y-%m-%d") # 提取月份 listtemp.append(temp.tm_mon) #print(listtemp) # “print listtemp” in Python 2.x tempkodf = quoteskodf.copy() tempkodf['month'] = listtemp closeMeansKO = tempkodf.groupby('month').mean().close listKO = [] for i in range(1,13): listKO.append(closeMeansKO[i]) listKOIndex = closeMeansKO.index plt.plot(listKOIndex,listKO) # 前两个参数为x轴和y轴的数据,第三个参数默认折线图,'o'则为散点图 #plt.bar(listKOIndex,listKO) # 则为直方图 plt.show()
2.3 Numpy数组也可作为Matplotlib的参数 和 pylab绘图
import numpy as np import matplotlib.pyplot as plt t = np.arange(0.,4.,0.1) plt.plot(t,t,t,t+2,t,t**2) plt.show()
import numpy as np import matplotlib.pylab as pl t = np.arange(0.,4.,0.1) pl.plot(t,t,t,t+2,t,t**2) pl.show()