数据
链接: https://pan.baidu.com/s/1ip3XE6prVwVC4msaHqrArA?pwd=j6tt
提取码: j6tt
import pandas as pd
data=pd.read_csv('/Users/tinawang/Documents/python/书店每月销量数据.csv',encoding='utf-8')
data
准备
#pip install matplotlib#安装
import matplotlib.pyplot as plt#导入
#设置中文字体
plt.rcParams["font.sans-serif"]="Arial Unicode MS"
#创建画布
plt.figure()
绘图
单维度柱状图
使用matplotlib.pyplot绘图
import matplotlib.pyplot as plt
#设置中文字体
plt.rcParams["font.sans-serif"]="Arial Unicode MS"
#创建画布
plt.figure(figsize=(15,10))
#绘制单维度的柱状图
plt.bar(data['month'],data["first_floor"])
分组柱状图
如果想绘制多个分组的柱状图,用matplotlib.pyplot的操作设置就比较麻烦,可以使用pandas模块进行绘图
pandas和matplotlib.pyplot模块绘图语法对比如下
matplotlib.pyplot | plt.bar(data["变量x"],data["变量y1]) |
pandas | data.plot.bar(["变量x"],["变量y1","变量y2","变量y3"]) |
import pandas as pd
data.plot.bar('month',['first_floor','second_floor','third_floor'],stacked=False)
plt.xlabel("月份")
plt.ylabel('销量')
plt.title("簇形柱状图")
data.plot.bar('month',['first_floor','second_floor','third_floor'],stacked=True)
plt.xlabel("月份")
plt.ylabel('销量')
plt.title("堆积柱状图")
结果如下
如果要绘制百分比堆积柱状图,python暂时不能直接由原始数据绘制得到,需要先把数据转换成百分比,再绘制堆积柱状图
data["一楼"]=data["first_floor"]/data["sum"]
data["二楼"]=data["second_floor"]/data["sum"]
data["三楼"]=data["third_floor"]/data["sum"]
data.plot.bar('month',['一楼','二楼','三楼'],stacked=True)
plt.xlabel("月份")
plt.ylabel('销量占比')
plt.title("百分比堆积柱状图")
结果如下: