条形图

条形图介绍

条形图是用宽度相同的条形的高度或长短来表示数据多少的图形。条形图可以横置或纵置,纵置时也称为柱形图。

特点

• 能够使人们一眼看出各个数据的大小。
• 易于比较数据之间的差别。

条形图绘制

条形图通过bar()函数绘制

• plt.bar(x, height) # 绘制以x为x轴位置,height为y轴位置的竖条形图
水平条形图绘制

水平条形图通过barh()函数绘制

• plt.barh(y, width) # 绘制以y为y轴位置,width为y轴位置的水平条形图

练习1

假设你获取到了2019年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据
a = [“流浪地球”,“复仇者联盟4:终局之战”,“哪吒之魔童降世”,“疯狂的外星人”,“飞驰人生”,“蜘蛛侠:英雄远征”,“扫毒2天地对决”,“烈火英雄”,“大黄蜂”,“惊奇队长”,“比悲伤更悲伤的故事”,“哥斯拉2:怪兽之王”,“阿丽塔:战斗天使”,“银河补习班”,“狮子王”,“反贪风暴4”,“熊出没”,“大侦探皮卡丘”,“新喜剧之王”,“使徒行者2:谍影行动”,“千与千寻”]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22] 单位:亿


from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"C:\Windows\Fonts\STXINGKA.TTF", size=14) # 找到自带的字体格式# 构建x,height
a = ["流浪地球","复仇者联盟4:终局之战","哪吒之魔童降世","疯狂的外星人","飞驰人生","蜘蛛侠:英雄远征","扫毒2天地对决","烈火英雄","大黄蜂","惊奇队长","比悲伤更悲伤的故事","哥斯拉2:怪兽之王","阿丽塔:战斗天使","银河补习班","狮子王","反贪风暴4","熊出没","大侦探皮卡丘","新喜剧之王","使徒行者2:谍影行动","千与千寻"]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22]# 放大画布
plt.figure(figsize=(14,8))# 柱状图
# width 调整柱子的宽度 默认0.8
# bottom y起始值改变了 用在堆叠图
# align 默认是center,边缘是edge,要是想左边,需要将width=-0.3,右边width=0.3
plt.bar(a,b,width=-0.3,bottom=10,align="edge")# 设置刻度
plt.xticks(range(len(a)),a,fontproperties=font,rotation=90)plt.show()

练习2

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)# 构建x,height
fruits = ["苹果","梨子","车厘子"]
Q1_sale = [1000,800,3000]
Q2_sale = [1200,700,2800]# 柱子的对应索引位置 [0,1,2]
# 设置柱子的宽度
width = 0.35
# rects1 = plt.bar(list(range(len(fruits))),Q1_sale,width)
# rects2 = plt.bar(list(range(len(fruits))),Q2_sale,width)
# 两个柱形宽度都为0.35 怎么使分别显示左右
# 位置左移width/2 位置是-width/2  [0-width/2,1-width/2,2-width/2]
po_l = [i-width/2 for i in list(range(len(fruits)))]
plt.bar(po_l,Q1_sale,width,label="Q1")po_r = [i+width/2 for i in list(range(len(fruits)))]
plt.bar(po_r,Q2_sale,width,label="Q2")# 设置图例
plt.legend()# 设置刻度
plt.xticks(range(len(fruits)),fruits)# 因此考虑函数封装 自动添加标签
def auto_label(x_po,y_po):  #  添加形参for x_i, y_i in zip(x_po,y_po):  # 传入x_po,y_poplt.annotate(f"{y_i}", xy=(x_i,y_i), xytext=(x_i-0.05,y_i+10),color="blue")# 调用
auto_label(po_l,Q1_sale)
auto_label(po_r,Q2_sale)plt.show()

堆叠图也没有封装响应的接口

# 堆叠图也没有封装响应的接口
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)# 构建x,height
fruits = ["苹果","梨子","车厘子"]
Q1_sale = [1000,800,3000]
Q2_sale = [1700,200,2800]plt.bar(range(len(fruits)),Q1_sale,width=0.5,label="Q1")  # 注意x轴不能简单的用fruits,而是用range(len(fruits)),这样才能不自动排列
plt.bar(range(len(fruits)),Q2_sale,width=0.5,bottom=Q1_sale,label="Q2")# 设置图例
plt.legend()# 设置刻度
plt.xticks(range(len(fruits)),fruits)
plt.show()

水平条形图

# 水平条形图import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)# 构建y,width
a = ["流浪地球","复仇者联盟4:终局之战","哪吒之魔童降世","疯狂的外星人","飞驰人生","蜘蛛侠:英雄远征","扫毒2天地对决","烈火英雄","大黄蜂","惊奇队长","比悲伤更悲伤的故事","哥斯拉2:怪兽之王","阿丽塔:战斗天使","银河补习班","狮子王","反贪风暴4","熊出没","大侦探皮卡丘","新喜剧之王","使徒行者2:谍影行动","千与千寻"]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22]plt.barh(range(len(a)),b,height=0.5)# 设置刻度
plt.yticks(range(len(a)),a)plt.show()

Python数据分析课--第五节 Matplotlib---条形图相关推荐

  1. Python 数据分析与展示笔记3 -- Matplotlib 库基础

    Python 数据分析与展示笔记3 – Matplotlib 库基础 Python 数据分析与展示系列笔记是笔者学习.实践Python 数据分析与展示的相关笔记 课程链接: Python 数据分析与展 ...

  2. python 数据分析库_五个 Python 常用数据分析库

    前言 Python 是常用是数据分析工具,常用的数据分析库有很多,下面主要介绍如下五个分析库:NumPy.Pandas.SciPy.StatsModels.Matplotlib. NumPy 是一个非 ...

  3. matplotlib plot 分组_小白学 Python 数据分析(16):Matplotlib(一)坐标系

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  4. Python数据分析三剑客学习笔记Day6——matplotlib包的使用:数据可视化,简单绘制柱状图、曲线图、饼图、频率分布直方图

    本文是视频Python数据分析三剑客 数学建模基础 numpy.pandas.matplotlib的学习笔记. -------------------------------------------- ...

  5. Python数据分析【1】:matplotlib库详细教程

    Python数据分析:matplotlib库详细教程 一.基本介绍 1. 数据分析 2. 环境安装 二.matplotlib 1. 基本介绍 2. 基本要点 3. 散点图/直方图/柱状图 4. 画图工 ...

  6. python数据分析与机器学习(Numpy,Pandas,Matplotlib)

    机器学习怎么学? 机器学习包含数学原理推导和实际应用技巧,所以需要清楚算法的推导过程和如何应用. 深度学习是机器学习中神经网络算法的延伸,在计算机视觉和自然语言处理中应用更厉害一些. 自己从头开始做笔 ...

  7. 【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用

    最近获得了一些四级成绩数据,大概500多个,于是突发奇想是否能够看看这些成绩数据是否满足所谓的正态分布呢?说干就干,于是有了这篇文章. 文章顺带介绍了xlrd模块的一些用法和matplotlib画自定 ...

  8. python编程的条件语句_自学Python编程【第五节】if条件语句

    我们已经能让程序程序判断我们输入的值了,但这程序还是有点呆,不管怎样都要把话说三遍.因为到目前为止,我们的程序都是按照顺序从上到下一行接一行地执行.有同学发来问题了:怎么能让它根据我们输入的结果来选择 ...

  9. python 数据分析工具之 numpy pandas matplotlib

    作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...

最新文章

  1. vc++学习篇(三)——预处理命令之条件编译(#ifdef,#else,#endif,#if等)
  2. 2022年的东南亚跨境市场风口,越南电商市场一定不要错过
  3. 【专访】PP租车孙览江:与有梦想的人一拍即合,PM都有改变世界的小情怀
  4. Nginx + CGI/FastCGI + C/Cpp(编不过去,不搞了。。。)(Common Gateway Interface)
  5. Mybatis中重要的小知识点
  6. 使用s3sec批量化自动扫描S3存储桶泄露数据
  7. Event Delegate(代理)异常:该委托必须有一个目标 解决方法
  8. LeetCode 419. 甲板上的战舰
  9. 2017.3.12 分割矩阵 失败总结
  10. linux之grep使用技巧
  11. Android 虚线切割线
  12. 硬盘分区时GPT和MBR的区别/选择
  13. 2021年下半年软件设计师上午真题答案及解析(三)
  14. c语言两个字母如何比较,c如何比较两个字符 C语言中怎么判断两个字符相同
  15. dao层通用封装_层超类型模式:封装多层系统中的通用实现
  16. android社交源码,原生仿微信社交社区即时通讯聊天双端APP源码开源 带PC客户端...
  17. kafka分区副本机制
  18. 微信小程序-优化接口代码-提取公共接口路径
  19. java邮箱和手机正则表达式
  20. 当代“中青年” 十年对比挑战图鉴,你的十年是这样吗?

热门文章

  1. react路由跳转传参
  2. 机器学习模型的误差分析-逼近误差、泛化误差、优化误差
  3. 用C语言创建文件写入并读取
  4. echarts图表动态获取后台数据详解(二)
  5. JS-定时器-节点属性操作-事件绑定-幸运大转盘
  6. Qt加载MySql5.6驱动问题
  7. C#实现海康威视摄像头的控制
  8. CentOS7添加win7启动项
  9. 关于gzip zgrep zcat 的使用
  10. CoreDNS Windows