一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形。

我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,分别使用matplotlib, seaborn, plotly等工具实现可视化。

本文主题是如何用Matplotlib创建柱状图。

import numpy as np
import matplotlib.pyplot as plt%matplotlib inlineplt.style.use("ggplot")

1. 基础柱状图

柱状图(bar chart): 用长方形(柱子)的长度表示数值的统计图表,又称为条形图。柱状图常用来对比两个以上的数值,适用于较小的数据集。

Matplotlib创建柱状图的接口: b a r ( x , h e i g h t , w i d t h , b o t t o m , a l i g n , c o l o r ) bar(x, height, width, bottom, align, color) bar(x,height,width,bottom,align,color)

  • x: 柱子的x轴坐标
  • height: 柱子高度,y轴坐标
  • width: 柱子宽度,默认0.8
  • bottom: 柱子底部的y轴坐标,默认为0
  • align: 柱子与x轴坐标的对齐方式,默认’center’
  • color: 柱子颜色
  • orientation: 柱子方向,‘horizontal’ or ‘vertical’

bar()默认创建垂直柱状图,barh()可创建水平柱状图,原理基本一致。

# 虚拟数据
x = ["A", "B", "C", "D", "E", "F", "G", "H"]
y = [150, 85.2, 65.2, 85, 45, 120, 51, 64]# 柱状图和散点图不同,散点图的(x,y)均为数值变量
# 柱状图的x轴显示分类变量,有两种处理方式
# 方式1:自己创建x轴坐标,并提供对应的标签
# 方式2:让Matplotlib自动完成映射# 方式1
# xticks = np.arange(len(x))  # 每根柱子的x轴坐标
# xlabels = x  # 每根柱子的标签
# fig, ax = plt.subplots(figsize=(10, 7))
# ax.bar(x=xticks, height=y, tick_label=xlabels)# 方式2(推荐)
fig, ax = plt.subplots(figsize=(10, 7))
ax.bar(x=x, height=y)
ax.set_title("Simple Bar Plot", fontsize=15)

2. 调整样式

Matplotlib创建图表的优势在于,用户可以定制每一个细节,接下来调整柱状图的样式,包括改变柱子的宽度,对齐方式和颜色,以及如何把数值添加到图表中。

x = ["A", "B", "C", "D", "E", "F", "G", "H"]
y = [150, 85.2, 65.2, 85, 45, 120, 51, 64]fig, ax = plt.subplots(figsize=(10, 7))
ax.bar(x=x,  # Matplotlib自动将非数值变量转化为x轴坐标height=y,  # 柱子高度,y轴坐标width=0.6,  # 柱子宽度,默认0.8,两根柱子中心的距离默认为1.0align="center",  # 柱子的对齐方式,'center' or 'edge'color="grey",  # 柱子颜色edgecolor="red",  # 柱子边框的颜色linewidth=2.0  # 柱子边框线的大小
)
ax.set_title("Adjust Styles of Bar plot", fontsize=15)# 一个常见的场景是:每根柱子上方添加数值标签
# 步骤:
# 1. 准备要添加的标签和坐标
# 2. 调用ax.annotate()将文本添加到图表
# 3. 调整样式,例如标签大小,颜色和对齐方式
xticks = ax.get_xticks()
for i in range(len(y)):xy = (xticks[i], y[i] * 1.03)s = str(y[i])ax.annotate(s=s,  # 要添加的文本xy=xy,  # 将文本添加到哪个位置fontsize=12,  # 标签大小color="blue",  # 标签颜色ha="center",  # 水平对齐va="baseline"  # 垂直对齐)

3. 堆积柱状图

有时候想在同一根柱子上显示两个不同的数值,即所谓堆积柱状图(stacked bar chart)。

假设一个场景,有6家门店,每家门店都销售三种产品,用堆积柱状图显示每家门店三种产品的销量。

shops = ["A", "B", "C", "D", "E", "F"]
sales_product_1 = [100, 85, 56, 42, 72, 15]
sales_product_2 = [50, 120, 65, 85, 25, 55]
sales_product_3 = [20, 35, 45, 27, 55, 65]fig, ax = plt.subplots(figsize=(10, 7))
# 先创建一根柱子,显示第一种产品的销量
ax.bar(shops, sales_product_1, color="red", label="Product_1")
# 第二根柱子“堆积”在第一根柱子上方,通过'bottom'调整,显示第二种产品的销量
ax.bar(shops, sales_product_2, color="blue", bottom=sales_product_1, label="Product_2")
# 第三根柱子“堆积”在第二根柱子上方,通过'bottom'调整,显示第三种产品的销量
ax.bar(shops, sales_product_3, color="green", bottom=np.array(sales_product_2) + np.array(sales_product_1), label="Product_3")ax.set_title("Stacked Bar plot", fontsize=15)
ax.set_xlabel("Shops")
ax.set_ylabel("Product Sales")
ax.legend()

4. 分组柱状图

分组柱状图的原理跟堆积柱状图类似,但柱子不再是堆叠在一起,而是在相同的X轴标签上分成几根更窄的柱子,这些柱子都属于同一个组。

沿用上面的案例。

shops = ["A", "B", "C", "D", "E", "F"]
sales_product_1 = [100, 85, 56, 42, 72, 15]
sales_product_2 = [50, 120, 65, 85, 25, 55]
sales_product_3 = [20, 35, 45, 27, 55, 65]# 创建分组柱状图,需要自己控制x轴坐标
xticks = np.arange(len(shops))fig, ax = plt.subplots(figsize=(10, 7))
# 所有门店第一种产品的销量,注意控制柱子的宽度,这里选择0.25
ax.bar(xticks, sales_product_1, width=0.25, label="Product_1", color="red")
# 所有门店第二种产品的销量,通过微调x轴坐标来调整新增柱子的位置
ax.bar(xticks + 0.25, sales_product_2, width=0.25, label="Product_2", color="blue")
# 所有门店第三种产品的销量,继续微调x轴坐标调整新增柱子的位置
ax.bar(xticks + 0.5, sales_product_3, width=0.25, label="Product_3", color="green")ax.set_title("Grouped Bar plot", fontsize=15)
ax.set_xlabel("Shops")
ax.set_ylabel("Product Sales")
ax.legend()# 最后调整x轴标签的位置
ax.set_xticks(xticks + 0.25)
ax.set_xticklabels(shops)

如果喜欢我们的文章,记得点赞和收藏哦,我们每天都会为大家带来Python,数据科学和量化交易的精品内容。

【关于我们】

蜂鸟数据:国内领先的金融数据API提供商。

蜂鸟数据团队由业界顶尖的数据工程师,数据科学家和宽客组成,我们正努力构建一个强大的金融数据库,并提供API接口,目标是令金融数据开源化和平民化。

浏览并测试我们接口吧,目前覆盖股票,外汇,商品期货,数字货币和宏观经济领域,包括实时报价(tick)和历史数据(分钟),提供REST API和Websocket两种接入方式,能够满足金融分析师,量化交易和理财app的需求。

需要金融数据?利用蜂鸟API将数据整合到您的应用

如果您准备好了,请登录蜂鸟官网,注册免费获取API密钥,然后开始探索我们的金融数据库吧。

Python数据可视化:如何创建柱状图相关推荐

  1. python数据可视化创建_【Python数据可视化】创建3D可视化图表

    创建3D柱状图 import random import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt mp ...

  2. python画柱状图和折线图-Python数据可视化–折线图–柱状图

    from matplotlib import pyplot import random x = list(range(0,100)) y = [random.randint(0,100) for r ...

  3. 使用matplotlib python数据可视化系列创建3d视频可视化

    用MATPLOTLIB设计 (DESIGNING WITH MATPLOTLIB) Hi, we will give you an excellent technique to create 3D v ...

  4. Python数据可视化:动态柱状图实现全过程指南

    数据来源 01 最终的案例效果 02 构建基础柱状图 演示 """ 演示基础的柱状图构建 """ # 导包,导入Bar功能构建柱状图对象 f ...

  5. 【Python实现数据可视化】创建3D柱状图

    虽然matplotlib主要专注于绘图,并且主要是二维的图形,但是它也有一些不同的扩展,能让我们在地理图上绘图,让我们把Excel和3D图表结合起来.在matplotlib的世界里,这些扩展叫做工具包 ...

  6. Python入门到实战(五)自动化办公、pandas操作Excel、数据可视化、绘制柱状图、操作Word、数据报表生成、pip install国内镜像下载

    Python入门到实战(五)conda使用.pandas操作Excel.数据可视化.绘制柱状图.操作Word.数据报表生成.pip install国内镜像下载 conda使用 常用操作 配置VS+Co ...

  7. Python数据可视化——使用Matplotlib创建散点图

    Python数据可视化--使用Matplotlib创建散点图 2017-12-27 作者:淡水化合物 转载请注明网址:https://www.cnblogs.com/pengsky2016/p/812 ...

  8. Python数据可视化:线型、Marker、简单折线图、多柱状图、基本饼形图与嵌套饼形图

    Python数据可视化 一:Matplotlib import matplotlib.pyplot as plt import numpy as np # plt,np取别名 matplotlib常用 ...

  9. 数据可视化实验:python数据可视化-柱状图,条形图,直方图,饼图,棒图,散点图,气泡图,雷达图,箱线图,折线图

    数据可视化实验:python数据可视化 实验8-12:大数据可视化工具-python 目录 1柱状图 2条形图 3直方图 4饼图 5棒图 6散点图 7气泡图 8雷达图 9箱线图 10折线图 1柱状图 ...

最新文章

  1. source insight 里编辑的时候,每次粘贴后,光标停留在粘贴内容的左面
  2. linux安装mysql5.7.25教程,Linux安装mysql-5.7.25
  3. 用Linux虚拟机手工编译安装Apache
  4. java自动获取时间 月代码_【java代码获取系统时间和执行定时任务】
  5. python 运算符重载_Python3面向对象-运算符重载
  6. 2021-2025年中国一次性马桶马桶座套行业市场供需与战略研究报告
  7. Mask R-CNN官方实现“又”来了!基于PyTorch,训练速度是原来2倍
  8. 一步步实现 Redis 搜索引擎 1
  9. 电商扣减库存_竞争激烈的电商市场,小型仓储外包服务解决了中小电商的后顾之忧...
  10. tiny-spring 分析
  11. 深度学习2.0-23.Keras高层接口之CIFAR10自定义网络实战
  12. Roberts算子边缘检测原理及实现
  13. 短信机bug,发短信发的直吐血…………
  14. 长沙云长计算机,【长沙记忆】原来关羽和长沙有这么多不解之缘
  15. lol服务器不稳定领皮肤,LOL免费领“源代码娜美”皮肤 官方致歉游戏卡顿问题...
  16. 招商银行深圳分行二面(技术面试)
  17. Photoshop设计网站原型图
  18. 我的世界:mc创世神插件WorldEdit使用
  19. 树莓派网线直连Linux,树莓派+一根网线直连笔记本电脑
  20. python自动获取号码归属地_Python批量获取并保存手机号归属地和运营商的示例

热门文章

  1. 电池电量android
  2. Java线程安全集合总结
  3. golang基础之RPC的客户端和服务端
  4. Keil MDK5中(1)汉字注释显示转向,字体显示朝左旋转90°(2)汉字注释显示为问号(3)按回车后光标缩进距离太大的解决办法
  5. html5 footer header,html-5 --html5教程article、footer、header、nav、section使用
  6. 众链网络的小程序怎么样?
  7. Mybatis源码分析之-Executor
  8. 2018-12-21 日记
  9. 软件项目经理新手上路6 - 不要进行小改进
  10. 使用python获取邮箱邮件