导入模块
import numpy as np
import scipy as sp
import talib as ta
import pandas as pd
import matplotlib as mpl
from matplotlib import pyplot as plt
from matplotlib.pyplot import plot as plot
import sklearn
import seaborn as sns
import sys
import statsmodels.api as sm
sys.path.append(r"C:\Users\Administrator\PycharmProjects\QY_TS_Quant")
from QY_plot import *
import QY_eplot
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
sns.set(font='SimHei',font_scale=1.25,style="ticks",rc={"xtick.major.size": 3, "ytick.major.size": 3})
data3
|
Q1 |
Q3 |
中位数 |
最大值 |
最小值 |
行业市盈率 |
| 主要消费 |
25.21 |
39.79 |
28.90 |
83.97 |
13.45 |
22.33 |
| 信息技术 |
30.30 |
46.32 |
38.95 |
80.54 |
14.66 |
23.69 |
| 公用事业 |
16.72 |
27.25 |
20.27 |
63.10 |
9.26 |
18.16 |
| 医药卫生 |
27.73 |
35.44 |
31.68 |
77.12 |
17.77 |
22.25 |
| 原材料 |
19.72 |
33.58 |
25.78 |
65.08 |
6.96 |
9.07 |
| 可选消费 |
18.05 |
30.63 |
23.21 |
74.10 |
12.13 |
15.57 |
| 工业 |
17.61 |
27.02 |
21.96 |
59.63 |
12.25 |
19.91 |
| 未知行业 |
11.10 |
26.88 |
17.86 |
79.81 |
-26.01 |
9.23 |
| 电信业务 |
27.32 |
44.82 |
34.48 |
89.26 |
13.92 |
21.03 |
| 能源 |
13.77 |
25.85 |
17.65 |
62.50 |
8.89 |
10.98 |
| 金融地产 |
13.11 |
23.02 |
17.76 |
86.54 |
8.73 |
21.02 |
def plotbox2(data, title="行业PE箱型图"):
plt.figure(figsize=(8, 5))
num = len(data)
w = 0.2
left = np.arange(num)-w
plt.xlim([-1, num])
plt.bar(left, (data["最大值"]+data["最小值"])/2, width=0, yerr=(data["最大值"]-data["最小值"])/2, tick_label = data.index, align="center")
plt.bar(left, data["Q3"]-data["Q1"], width=2*w, bottom=data["Q1"], color="r", edgecolor="b", alpha=0.2)
plt.bar(left, np.zeros_like(left), bottom=data["中位数"], width=w, xerr=w/2, color="r",ecolor ='r',align="edge", label="中位数")
plt.bar(left,height=np.zeros_like(left), width=-w, bottom=data["行业市盈率"], xerr=w/2, align="edge", ecolor ='cyan',color="cyan",label="最新市盈率")
plt.setp(plt.gca().get_xticklabels(), rotation=90);
plt.grid(axis="y")
plt.title(title)
plt.legend()
return num, left, w
plotbox2(data3);
