python笔记35_2:数据可视化之多维柱状图

链接:https://pan.baidu.com/s/15jQhGzVV9zgYMWxstk-FwA
提取码:fb0c

# -*- coding: utf-8 -*-

#多维柱形图的绘制方法:

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")

#得到手机品牌与通信品牌的交叉表:
result = data.pivot_table(
                          values='月消费(元)',
                          index='手机品牌',
                          columns='通信品牌',
                          aggfunc=numpy.sum
                          )
index = numpy.arange(len(result))
#我们有三个通信品牌,所以定义三个颜色:
minColor = (42/256,87/256,141/256,1/3) 
midColor = (42/256,87/256,141/256,2/3)
maxColor = (42/256,87/256,141/256,3/3)

#使用排列的方式,把数据排列放好,即为多维条形图
plt.bar(
        index,result['全球通'],
        color=minColor,width=1/4
        )
plt.bar(
        index+1/4,result['动感地带'],
        color=midColor,width=1/4
        )
plt.bar(
        index+2/4,result['神州行'],
        color=maxColor,width=1/4
        )
plt.xticks(index+1/3,result.index)
#设置每种颜色的柱子代表的通信品牌:
plt.legend(['全球通','动感地带','神州行'])
plt.show()

#优化一下,对数据进行一个排序
#按神州行的月消费进行倒序排列(但是其他两个品牌的月消费大小这里控制不了)
result = result.sort_values(
                            by='神州行',ascending=False
                            )
plt.bar(
        index,result['神州行'],
        color=minColor,width=1/4
        )
plt.bar(
        index+1/4,result['动感地带'],
        color=midColor,width=1/4
        )
plt.bar(
        index+2/4,result['全球通'],
        color=maxColor,width=1/4
        )
plt.xticks(index+1/3,result.index)
#设置每种颜色的柱子代表的通信品牌:
plt.legend(['神州行','动感地带','全球通'])
plt.show()

#堆叠柱形图的绘图案例,请看下一个源码文件

运行效果:
运行结果

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值