目錄:
1、pandas官方畫圖鏈接
2、標記圖中數據點
3、畫圖顯示中文
4、畫股票K線圖
5、matplotlib基本用法
6、format輸出
6、format輸出例子
eps_range=[0.1,0.2,0.3] #plt.legend(['eps =%0.1f' % eps for eps in eps_range],loc='lower right') plt.legend(['eps ={:.1f}'.format(eps) for eps in eps_range],loc='lower right')

5、matplotlib基本用法
結論:python腳本文件中,matplotlib默認是阻塞模式,plt.plot(x) 或plt.imshow(x)是直接出圖像,需要plt.show()后才能顯示圖像。不用ion()和ioff(),麻煩 !!!
plt.cla() #清除原有圖像
1、pandas官方畫圖鏈接
http://pandas.pydata.org/pandas-docs/stable/visualization.html
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html?highlight=plot
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.plot.html?highlight=series
2、標記圖中數據點
import matplotlib.pyplot as plt
import numpy as np
def demo_test():
a=np.array([0.15,0.16,0.14,0.17,0.12,0.16,0.1,0.08,0.05,0.07,0.06])
#Series也有argmax屬性,直接Series.argmax()得到,新版本(0.20.0)中argmax屬性修改為idxmax,argmin同。
max_indx=np.argmax(a)#max value index
min_indx=np.argmin(a)#min value index
plt.plot(a,'r-o')
plt.plot(max_indx,a[max_indx],'ks')
show_max='['+str(max_indx)+' '+str(a[max_indx])+']'
plt.annotate(show_max,xytext=(max_indx,a[max_indx]),xy=(max_indx,a[max_indx]))
plt.plot(min_indx,a[min_indx],'gs')
plt.show()
demo_test()

3、畫圖顯示中文
import matplotlib #指定默認字體 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] matplotlib.rcParams['font.family']='sans-serif' #解決負號'-'顯示為方塊的問題 matplotlib.rcParams['axes.unicode_minus'] = False
4、畫股票K線圖
#數據源:http://pan.baidu.com/s/1hs5Wn0w #要求:Matlibplot簡單應用 #1.根據數據繪制出2017年6月~8月日線級別的價格走勢K線。 #2.將MA5、MA10、MA20疊加至圖中 import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.finance as mpf import datetime from matplotlib.pylab import date2num plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False #讀取數據並去掉多余數據 data=pd.read_csv('000001.SZ.csv',encoding='gbk',index_col=0).iloc[:-2,:4] #將索引調整為datetime格式 data.index=pd.to_datetime(data.index) #將分鍾數據聚合為日數據 data_open=data.loc[:,'開盤價(元)'].resample('D').first().dropna() data_high=data.loc[:,'最高價(元)'].resample('D').max().dropna() data_low=data.loc[:,'最低價(元)'].resample('D').min().dropna() data_close=data.loc[:,'收盤價(元)'].resample('D').last().dropna() #將開盤、收盤、最高、最低數據合並,注意數據順序,與candlestick_ochl一致 new_data=pd.concat([data_open,data_close,data_high,data_low],axis=1) #new_data=new_data.ix['2017-06':'2017-08'];print(new_data) #將日期索引調整到列 new_data=new_data.reset_index() #將日期轉換為num格式 new_data['日期']=[int(date2num(new_data.ix[i,['日期']])) for i in range(len(new_data))] quotes=np.array(new_data) fig,ax=plt.subplots(figsize=(8,5)) mpf.candlestick_ochl(ax,quotes,width=1,colorup='g',colordown='r') #分別畫出5日、10日、20日均線圖 new_data.index=new_data['日期'] new_data['收盤價(元)'].rolling(window=5).mean().plot() new_data['收盤價(元)'].rolling(window=10).mean().plot() new_data['收盤價(元)'].rolling(window=20).mean().plot() #將x軸設置為日期,調整x軸日期范圍 ax.xaxis_date() ax.set_xlim(datetime.datetime(2017,6,1),datetime.datetime(2017,8,31)) plt.show()
