python涨跌柱表行业市盈率

导入模块

# %load "E:\桌面space\临时数据\python\个人自定义模块\ImportFile.py"
# Standard Scientific Import
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 as sm
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})# 解决Seaborn中文显示问题

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);

python涨跌柱表行业市盈率_第1张图片

  • 样例

你可能感兴趣的:(可视化范例)