python可视化-条形图(柱状图)与直方图

一、条形图

条形图(bar chart),也称为柱状图,是一种以长方形的长度为变量的统计图表,长方形的长度与它所对应的变量数值呈一定比例。。

1.1 竖型条形图

画条形图要用到 pyplot 中的 bar 函数,该函数的基本语法为:

bar(x,height,width,**kwargs)
#height:个数或者一个数组,表示条形高度
#width:可选参数,一个数或一个数组,条形宽度,默认0.8
#**kwargs:不定长的关键字参数,用字典形式设置条形图的其他属性,包括图形标签 label,颜色标签 color,不透明度 alpha 等

假设对以下表进行条形图展示,

饮料boygirl
六个核弹69
忘崽年奶74
王老菊64
茶兀26
雷碧15

画出boy买各类饮料数量的竖条形图,代码如下:

# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
 
waters = ('六个核弹', '忘崽年奶', '王老菊', '茶兀', '雷碧')
boy_buy_number = [6, 7, 6, 2, 1]
 
plt.bar(waters, boy_buy_number)
plt.title('boy买各类饮料数量')
plt.
plt.show()

输出图如下:
在这里插入图片描述

1.2 横型条形图

画出boy买各类饮料数量的竖条形图,代码如下:


import matplotlib.pyplot as plt
 
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
 
waters = ('六个核弹', '忘崽年奶', '王老菊', '茶兀', '雷碧')
boy_buy_number = [6, 7, 6, 2, 1]
 
plt.barh(waters, boy_buy_number)
plt.title('boy买各类饮料数量')

plt.show()

输出图如下:
在这里插入图片描述

1.3 并列条形图

画出boy和girl买各类饮料数量的竖条形图,代码如下:

import matplotlib.pyplot as plt
import numpy as np
 
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
 
# 输入统计数据
waters = ('六个核弹', '忘崽年奶', '王老菊', '茶兀', '雷碧')
boy_buy_number = [6, 7, 6, 1, 2]
girl_buy_number = [9, 4, 4, 5, 6]
 
bar_width = 0.3 # 条形宽度
index_male = np.arange(len(waters)) # 男生条形图的横坐标
index_female = index_male + bar_width # 女生条形图的横坐标
 
# 使用两次 bar 函数画出两组条形图
plt.bar(index_male, height=boy_buy_number, width=bar_width, color='g', label='男性')
plt.bar(index_female, height=girl_buy_number, width=bar_width, color='r', label='女性')
 
plt.legend() # 显示图例
plt.xticks(index_male + bar_width/2, waters) # 让横坐标轴刻度显示 waters 里的饮用水, index_male + bar_width/2 为横坐标轴刻度的位置
plt.ylabel('购买量') # 纵坐标轴标题
plt.title('男、女购买饮料情况') # 图形标题
 
plt.show()

输出图如下:

在这里插入图片描述

二、条形图

2.1 直方图与条形图区别

  1. 条形图:用条形的长度表示各类别频数的多少,其宽度(表示类别)则是固定的;
  2. 直方图:用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。
  3. 分组数据具有连续性,直方图的各矩形通常是连续排列,而条形图则是分开排列。
  4. 条形图主要用于展示分类数据,而直方图则主要用于展示数据型数据。

2.2 直方图示例

展示不同观影时长的区间统计直方图

import pandas as pd
import matplotlib.pyplot  as plt
import pylab as pl
# 展现不同电影的时长分布状态
plt.figure(figsize=(20, 8), dpi=100)
# 准备时长数据
time =[131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 136, 126, 134,  95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,  86, 101,  99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140,  83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144,  83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137,  92,121, 112, 146,  97, 137, 105,  98, 117, 112,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
# 定义一个间隔大小
a = 5
# # 得出组数
bins = int((max(time) - min(time)) / a)
# 画出直方图
plt.hist(time, bins=100)
# 指定刻度的范围,以及步长
plt.xticks(list(range(min(time), max(time)))[::2])
plt.xlabel("电影时长大小")
plt.ylabel("电影的数据量")
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()

输出图如下:
在这里插入图片描述

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸落寰宇

小编会不断努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值