[关闭]
@Channelchan 2017-11-27T13:50:28.000000Z 字数 2032 阅读 137589

Matplotlib

直方图

价格直方图

获取一个dataframe,并用直方图显示:

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  1. stock1 = pd.read_excel('sz50.xlsx',sheetname='600036.XSHG', index_col='datetime')
  1. plt.figure(figsize=(15, 7))
  2. plt.hist(stock1.close, bins=20)
  3. plt.xlabel('Price')
  4. plt.ylabel('Number of Days Observed')
  5. plt.title('Frequency Distribution of 000001 Prices, 2016')
  6. plt.show()

![png](output_3_0.png)

回报率直方图:

  1. R1 = stock1.close.pct_change()[1:]
  2. # 20 bins,代表柱的数量
  3. plt.figure(figsize=(15, 7))
  4. plt.hist(R1, bins=20)
  5. plt.xlabel('Return')
  6. plt.ylabel('Number of Days Observed')
  7. plt.title('Frequency Distribution of 000001 Returns, 2016')
  8. plt.show()

![png](output_5_0.png)

累积直方图 (离散估计的CDF)

  1. plt.figure(figsize=(15, 7))
  2. plt.hist(R1, bins=20, cumulative=True)
  3. plt.xlabel('Return')
  4. plt.ylabel('Number of Days Observed')
  5. plt.title('Cumulative Distribution of 600036 Returns, 2016')
  6. plt.show()

![png](output_7_0.png)

  1. stock2 = pd.read_excel('sz50.xlsx',sheetname='601318.XSHG', index_col='datetime')
  1. plt.figure(figsize=(15, 7))
  2. plt.scatter(stock1.close, stock2.close, c = ['c','r'], s = 20)
  3. plt.xlabel('600036')
  4. plt.ylabel('601318')
  5. plt.title('Daily Prices in 2017')
  6. plt.show()

![png](output_9_0.png)

回报率散点图:

  1. plt.figure(figsize=(15, 7))
  2. R2 = stock2.close.pct_change()[1:]
  3. plt.scatter(R1, R2,c=['c','r'],s=20)
  4. plt.xlabel('000001')
  5. plt.ylabel('000005')
  6. plt.title('Daily Returns in 2016')
  7. plt.show()

![png](output_11_0.png)

线图

画出价格线图。

  1. plt.figure(figsize=(15, 7))
  2. plt.plot(stock1.close)
  3. plt.plot(stock2.close)
  4. plt.ylabel('Price')
  5. plt.legend(['600036','601318'])
  6. plt.show()

![png](output_13_0.png)

回报率线图

画出股票000001的回报率线图。

  1. plt.figure(figsize=(15, 7))
  2. plt.plot(R1)
  3. plt.hlines(0,R1.index[0],R1.index[-1],linestyles='dashed',alpha=0.3)
  4. plt.ylabel('Return')
  5. plt.title('600036 Returns')
  6. plt.show()

![png](output_15_0.png)

两图合并

  1. plt.figure(figsize=(15, 7))
  2. plt.subplot(2,1,1)
  3. plt.plot(stock1.close)
  4. plt.subplot(2,1,2)
  5. plt.plot(stock2.close)
  6. plt.show()

![png](output_17_0.png)

  1. from matplotlib.pylab import date2num
  2. stock1['time'] = list(map(date2num, stock1.index))
  1. candle = stock1.reindex_axis(["time", "open", "high", "low", "close"], 1).values
  1. import matplotlib.finance as mpf
  2. fig, (ax,ax1) = plt.subplots(2,1,sharex=True, figsize=(15,25))
  3. fig.subplots_adjust(bottom=0.5)
  4. ax.grid(True)
  5. mpf.candlestick_ohlc(ax, candle, width=0.6, colorup='r', colordown='g',alpha=1.0)
  6. ax1.bar(stock1.index,stock1.volume)
  7. ax.xaxis_date ()
  8. plt.show()

![png](output_20_0.png)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注