python-绘图(主次坐标轴)
-- coding: utf-8 --
“”"
Spyder Editor
This is a temporary script file.
“”"
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data1=pd.ExcelFile(r"D:\ZXL工作文件\6.15\6.16汇报内容1.xlsx")
raw_data=pd.read_excel(data1,sheet_name='原始数据')
zhiji=pd.read_excel(data1,sheet_name="职级")
dict1=pd.read_excel(data1,sheet_name="职级").set_index('职级')['对应等级'].to_dict()
raw_data['对应等级']=raw_data['职级'].map(dict1)
x=raw_data[(raw_data['业务']=="新车")&(raw_data['对应等级']=="客户经理")]['职级']
y1= raw_data[(raw_data['业务']=="新车")&(raw_data['对应等级']=="客户经理")]['人数']
y2= raw_data[(raw_data['业务']=="新车")&(raw_data['对应等级']=="客户经理")]['平均产能']
y3= raw_data[(raw_data['业务']=="新车")&(raw_data['对应等级']=="客户经理")]['成本率(元效)']
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
# plt.rcParams['axes.unicode_miuns']=False # 用来正常显示负号
重叠图
fig=plt.figure()
ax=fig.add_subplot(111)
ax.bar(x,y1,color='orange',label="人数")
ax.bar(x,y2,color='gray',label="人均产能")
ax.plot(x,y3,color='yellow',label="成本率")
ax.legend(loc='best',frameon=False)
ax.set_title("%s人员产能及薪酬-%s" % (raw_data['对应等级'][1],raw_data['业务'][1]))
主次坐标轴
x1=np.arange(len(x))
fig,ax1=plt.subplots(figsize=(14,8))
ax2=ax1.twinx() # 显示次坐标轴
b1=ax1.bar(x,y1,color="orange",width=0.3,label="人数")
l1=ax2.plot(x,y3,color='yellow',label="成本率")
xticks_lable=x.values
ax1.set_xticks(x) # 显示X轴刻度标签值
plt.tick_params(left=True)
ax1.set_xticklabels(x.values) # 缺少一个值
ax2.set_ylabel('成本率')
ax1.legend(loc='best',frameon=False) # 图例放在最优的位置
ax2.legend(loc='best',frameon=False) # 图例放在最优的位置
ax1.bar_label(b1) # 显示数据标签
ax1.set_title("主次坐标图")
plt.show()
多列柱状图
plt.figure()
b1=plt.bar(x1,y1,color="orange",width=0.3,label="人数")
b2=plt.bar(x1+0.3,y2,color='gray',width=0.3,label="人均产能")
plt.xticks(x1+0.15,x.values)
plt.bar_label(b1)
plt.bar_label(b2,fmt='%d')
plt.title("多列柱状图")
plt.show()