matplotlib_03_柱状图(条形图)

纵向柱状图

# 对比每部电影的票房收入
from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

# 1、准备数据
movie_names = ['雷神3:\n诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴', '降魔传','追捕','七十七天','密战','狂兽','其它']
print(len(movie_names))
tickets = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]

# 2、画布
plt.figure(figsize = (20,10), dpi = 100)

# 3、绘图(bar)
x = range(len(movie_names))
plt.bar(x,tickets,width=0.6, color=['b','r','g','y','c','m','y','k','c','g','b'])

# 4、刻度
# 如果movie_names中元素过长,无法完全展示,可以在元素中输入换行符
x_label = ["{}".format(i) for i in movie_names]
plt.xticks(x, x_label)

# 添加描述信息
plt.xlabel("电影名称")
plt.ylabel("电影票房")
plt.title("某日票房排名")


# 5、网格
plt.grid(linestyle='--',alpha = 0.6)

# 6、保存图像
plt.savefig("bar01.png")

# 7、展示图像
plt.show()

在这里插入图片描述

横向柱状图(条形图)

# 对比每部电影的票房收入
from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

# 1、准备数据
movie_names = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴', '降魔传','追捕','七十七天','密战','狂兽','其它']
print(len(movie_names))
tickets = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]

# 2、画布
plt.figure(figsize = (20,10), dpi = 100)

# 3、绘图(bar)
x = range(len(movie_names))
"""
特别注意
barh横向展示柱状图,此时柱宽不再是weight,而是height
"""
plt.barh(x,tickets,height=0.6, color=['b','r','g','y','c','m','y','k','c','g','b'])

# 4、刻度
# 此时需要修改Y轴的刻度
y_label = ["{}".format(i) for i in movie_names]
plt.yticks(x, y_label)


# 添加描述信息
plt.xlabel("电影名称")
plt.ylabel("电影票房")
plt.title("某日票房排名")


# 5、网格
plt.grid(linestyle='--',alpha = 0.6)

# 6、保存图像
plt.savefig("bar02.png")

# 7、展示图像
plt.show()

在这里插入图片描述

多柱状图1

from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

# 1、准备数据
movie_name = ['雷神3:诸神黄昏','正义联盟','寻梦环游记']

first_day = [10587.6,10062.5,1275.7]
first_weekend=[36224.9,34479.6,11830]

# 2、画布
plt.figure(figsize = (20,10), dpi =80)

# 3、绘图
x1 = range(len(movie_name))
plt.bar(x1,first_day,color = 'c',width = 0.2, label='首日')
# x轴需要平移,使首日票房与首周票房的柱状图不重叠,平移一个柱状图的宽度
x2 = [i+0.2 for i in x1]
plt.bar(x2,first_weekend,color = 'y',width = 0.2, label='首周')

# 图例
plt.legend(loc='lower right')

# 修改刻度
# 往右边0.1,居中于两柱之间
plt.xticks([i+0.1 for i in x1],movie_name)

# 网格
plt.grid(linestyle = '--',alpha=0.6)

#
plt.title("首日首周电影票房比对")
plt.xlabel("电影")
plt.ylabel("票房,单位(万)",rotation =0)

plt.savefig("bar03.png")

plt.show()

在这里插入图片描述

多柱状图2

a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]

bar_width = 0.2
x1 = range(len(a))
x2 = [i+width for i in x1]
x3 = [i+width*2 for i in x1]


plt.figure(figsize = (20,10), dpi =80)
plt.bar(x1,b_14,width=bar_width)
plt.bar(x2,b_15,width=bar_width)
plt.bar(x3,b_16,width=bar_width)

# 刻度
# 在中间那根柱子上定义
plt.xticks(x2,a)

plt.savefig("bar04.png")
plt.show()

在这里插入图片描述

真实数据演练:

import matplotlib.pyplot as plt
import pandas as pd
import os 


plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False


os.chdir('E:\学习文档\data')

# 从excel读取数据
data = pd.read_excel('cust.xlsx',encoding = 'utf-8',usecols=[0,3,4,7])
# 统计各个业务子类型的交易金额
tran_data = data.groupby('业务子类型').sum()

x_data = tran_data.values
y_data = tran_data.index

x_data = x_data.flatten()

'''
plt.bar(*args, **kwargs)
bar(x, height, width,color, bottom,edge, *, align='center', **kwargs)

常用参数说明:

x:柱体在x轴上的坐标位置
height:柱体的高度
width:条形柱的宽度
color:条形柱的填充颜色
bottom:条形的起始位置
edgecolor:条形柱的边框颜色
linewidth:条形图边框宽度
tick_label:条形图的刻度标签
align:指定x轴上的对齐方式

'''

# 1、画布
plt.figure(figsize = (15,9),dpi = 80,facecolor = 'w')


# 2、绘画条形图
x = range(len(x_data))
plt.bar(x = x,height = x_data,width = 0.4,color=['c','r','g','m'],edgecolor='black',linewidth = 2,tick_label= y_data,alpha = 0.5)

# 3、设置x,y轴的标签
plt.xlabel('业务类型',labelpad = 20,fontsize = 10)
plt.ylabel('交易量',labelpad = 20,fontsize = 10)

# 4、设置图形标题
plt.title('各业务类型交易量',pad = 30,fontsize = 30)

# 修改刻度值文字大小
plt.xticks(fontsize = 20)

# 5、网格线
plt.grid(linestyle ='--',alpha = 0.4)

# 6、显示图片
plt.show()

# 1、画布
plt.figure(figsize = (15,9),dpi = 80)


# 2、绘画条形图
x = range(len(x_data))
plt.bar(x = x,height = x_data,width = 0.4,color=['c','r','g','m'],edgecolor='black',linewidth = 2,tick_label= y_data,alpha = 0.5)

# 3、设置x,y轴的标签
plt.xlabel('业务类型',labelpad = 20)
plt.ylabel('交易量',labelpad = 20)

# 4、设置图形标题
plt.title('各业务类型交易量',pad = 30,fontsize = 30)

# 5、网格线
plt.grid(linestyle ='--',alpha = 0.4)

# 6、显示图片
plt.show()

原始数据:
在这里插入图片描述
条形图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值