python下matplotlib画基本图形(柱状图,折线图,可显示数值饼图)

matplotlib画柱状图,折线图,饼图

首先导入maplotlib画图函数

1
import matplotlib.pyplot as plt

先在python导入我们的excel数据:
在这里插入图片描述
接下来进入主题:

1.柱状图

以上表为例子,我们以姓名为横坐标,工资为纵坐标画出柱状图:
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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()

结果:
在这里插入图片描述

2.折线图

知道条形统计图之后折线其实大同小异:
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
"""折线图"""
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()                                     #显示

效果图简单就不展示了

3.饼图

3.1普通饼图(显示比例)

展示各个部门的经济比例图:
方法很多,我的方法是先把各部门的总工资先计算出来,再画图
画图的关键就是函数plt.pie()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
"""饼图"""
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()

效果图:
在这里插入图片描述

3.2可显示具体数值的饼图

这个难度稍微大一点
代码展示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""高级饼图"""
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()

效果图如下:
在这里插入图片描述
以上就是全部展示啦,有帮助到您,请点个赞哦,谢谢