链接:https://pan.baidu.com/s/15jQhGzVV9zgYMWxstk-FwA
提取码:fb0c
# -*- coding: utf-8 -*-
#1. 概念:柱形图,是一种以长方形的单位长度,根据数据大小绘制的统计图,用来比较两个或两个以上的数据,可以是时间,也可以是不同类别,所以
#柱形图可以表示趋势,也可以表示不同项目间的对比,如果横轴是数值区间,还可以表示数据分布
#2. 柱形图绘图函数:
#绘制纵向的柱形图:bar(left,height,width,color)
#绘制横向的柱形图:barh(bottom,width,height,color)
#参数说明:
#left:x轴的位置序列。一般使用arange函数产生一个序列
#height:y轴的数值序列。也就是柱形图的高度,一般就是我们需要展示的数据
#width:柱形图的宽度。一般设置为1即可
#color:柱形图的填充颜色
#barh函数请根据方向一一对应即可
import numpy
import pandas
import matplotlib
from matplotlib import pyplot as plt
font = {
'family':'SimHei'
}
matplotlib.rc('font',**font)
data = pandas.read_csv("D:/workspaces/python/pythonStudy/35.csv") #列:号码、省份、手机品牌、通信品牌、手机操作系统、月消费(元)、月流量(M)
result = data.groupby(
by=['手机品牌'],
as_index=False
)['月消费(元)'].agg({'月消费':numpy.sum})
#竖向柱形图:
#使用arange函数生成间隔为1,数量为统计结果行数的递增序列,用来作为柱形图的x轴位置:
index = numpy.arange(result.月消费.size)
plt.bar(index,result['月消费'])
plt.show()
#执行以上代码图形就可以显示出来了,但是问题也很明显:颜色不好看、没有标签、柱子高度没有排序,显得凌乱。这样的柱形图绘制出来是没有意义的。
#优化点1:配置颜色
mainColor = (42/256,87/256,141/256,1)
plt.bar(
index,result['月消费'],
color=mainColor
)
plt.show()
#优化点2:配置x轴刻度(标签)
plt.bar(
index,result['月消费'],
color=mainColor
)
plt.xticks(index,result.手机品牌)
plt.show()
#优化点4:对数据排序后再绘图(因为我们发现有两个柱子的高度几乎相等,到底谁大谁小呢?)
sgb = result.sort_values(
by='月消费',
ascending=False #降序
)
#sgb是排序后的数据框
plt.bar(index,sgb.月消费,
color=mainColor
)
plt.xticks(index,result.手机品牌)
plt.show()
#绘制横向柱形图:
plt.barh(index,sgb.月消费,
color=mainColor)
plt.yticks(index,sgb.手机品牌)
plt.show()
#以上是单柱形图的绘制方法,下面开始学习多柱形图的绘制方法:
#请看下一个源程序文件