首先导入maplotlib画图函数
import matplotlib.pyplot as plt
先在python导入我们的excel数据:
接下来进入主题:
以上表为例子,我们以姓名为横坐标,工资为纵坐标画出柱状图:
代码如下:
import pandas as pd #导入pandas库
import matplotlib.pyplot as plt #导入画图的库
excel_file = './try.xlsx' #导入excel数据
data = pd.read_excel(excel_file) #读入数据
"""柱状图"""
plt.rcParams['font.sans-serif'] = ['SimHei'] #可以显示中文
plt.figure(figsize=(10, 6)) #画图,大小可自己设置
plt.ylabel('工资(元)') #横纵坐标的名称设置
plt.xlabel('姓名')
x = data['姓名'] #横纵坐标的数据导入
y = data['工资']
plt.bar(x, y) #东西放进bar里(当成一个盒子理解)
plt.title('柱状图演示') #标题
plt.show()
知道条形统计图之后折线其实大同小异:
代码如下:
"""折线图"""
import pandas as pd #导入pandas库
import matplotlib.pyplot as plt #导入画图的库
excel_file = './try.xlsx' #导入excel数据
data = pd.read_excel(excel_file) #读入数据
plt.rcParams['font.sans-serif'] = ['SimHei'] #可以显示中文
plt.figure(figsize=(10, 6)) #画图,大小可自己设置
plt.plot(data['姓名'], data['工资'], color='blue', label='线的名称', marker='s') #marker折线形状
plt.legend() #显示图例,这里指显示‘label='线的名称'
plt.ylabel('工资(元)')
plt.show() #显示
效果图简单就不展示了
展示各个部门的经济比例图:
方法很多,我的方法是先把各部门的总工资先计算出来,再画图
画图的关键就是函数plt.pie()
"""饼图"""
import pandas as pd #导入pandas库
import matplotlib.pyplot as plt #导入画图的库
excel_file = './try.xlsx' #导入excel数据
data = pd.read_excel(excel_file) #读入数据
plt.rcParams['font.sans-serif'] = ['SimHei'] #可以显示中文
plt.figure(figsize=(8, 6)) #画图,大小可自己设置
bumenshuju = {'部门': ['A', 'B', 'C'],
'部门工资': [sum(data.loc[data['部门'] == 'A', '工资']),
sum(data.loc[data['部门'] == 'B', '工资']),
sum(data.loc[data['部门'] == 'C', '工资'])]}
dataframe_1 = pd.DataFrame(bumenshuju)
# print(dataframe_1)
labels = dataframe_1['部门工资']
x = dataframe_1['部门']
plt.pie(labels, labels=x, autopct='%1.1f%%')
plt.legend('A''B''C')
plt.title('部门的工资分布')
plt.axis('equal')
plt.show()
这个难度稍微大一点
代码展示:
"""高级饼图"""
import pandas as pd #导入pandas库
import numpy as np
import matplotlib.pyplot as plt
excel_file = './try.xlsx' #导入excel数据
data = pd.read_excel(excel_file) #读入数据
plt.rcParams['font.sans-serif'] = ['SimHei'] #可以显示中文
fig, ax = plt.subplots(figsize=(8, 6), subplot_kw=dict(aspect="equal")) #画布的基本设置
bumenshuju = {'A部门': sum(data.loc[data['部门'] == 'A', '工资']), #构建各部门的工资字典,然后转成dataframe表格类型
'B部门': sum(data.loc[data['部门'] == 'B', '工资']),
'C部门': sum(data.loc[data['部门'] == 'C', '工资'])}
data_1 = [bumenshuju[i] for i in bumenshuju.keys()] #即工资总数
index = [i for i in bumenshuju.keys()] #部门
def func(pct, allvals): #返回饼图里显示的一串字符
absolute = int(pct/100.*np.sum(allvals))
return "{:.1f}%\n({:d} 元)".format(pct, absolute)
wedges, texts, autotexts = ax.pie(data_1, autopct=lambda pct: func(pct, data_1),
textprops=dict(color="w")) #设置饼图的东西
ax.legend(wedges, index, #图例的设置,可以自己设置
title="部门",
loc="center left",
bbox_to_anchor=(1, 0, 0.5, 1))
ax.set_title("各个部门工资比例和具体工资总数") #标题
plt.show()
直接上代码,用的表格是一样的
"""散点图"""
plt.rcParams['font.sans-serif'] = ['SimHei'] #可以显示中文
fig = plt.subplots(figsize=(10, 6))
x = np.array(data['姓名'])
y = np.array(data['工资'])
plt.scatter(x, y) #scatter()函数画散点图
plt.show()
代码如下:
"""绘制误差棒图"""
plt.rcParams['font.sans-serif'] = ['SimHei'] #可以显示中文
error = []
for i in range(len(data['工资'])): #把误差搞出来,range才能迭代,这里可以看出误差是和均值工资的差距
a = data['工资'][i] - np.sum(data['工资'])/len(data['工资'])
error.append(a)
y = data['工资']
x = data['姓名']
y.plot(yerr=error)
plt.show()
接下来还有matplotlib画的各种图形,会积极更新的,建议收藏