当前位置: 首页 > news >正文

数据可视化笔记:柱状图

数据可视化笔记:柱状图与饼图

1.1 一、基础配置

在进行数据可视化之前,需要对Matplotlib进行一些基础配置,以确保图表能够正确显示中文以及设置合适的分辨率和大小。

from matplotlib import pyplot as plt
import numpy as np# 设置中文字体为黑体,不包含中文负号
# 由于不同操作系统支持的字体不同,SimHei是Windows系统下的黑体,如果在其他系统中可能需要更换为相应支持的中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False
# 设置图像的分辨率,这里设置为100,分辨率越高图像越清晰,但文件大小也会相应增加
plt.rcParams['figure.dpi'] = 100
# 设置图像显示的大小,这里设置宽度为5,高度为3,单位为英寸
plt.rcParams['figure.figsize'] = (5, 3)

1.2 二、柱状图

柱状图是一种常用的数据可视化图表,用于比较不同类别之间的数据大小。

1.2.1 竖直柱状图

1.2.1.1 基本语法
plt.bar(x, height, width=0.8, bottom=None, align='center', **kwargs)
  • x:表示柱子的横坐标位置,可以是一个列表或数组。
  • height:表示柱子的高度,对应的数据值。
  • width:柱子的宽度,默认值为0.8。
  • bottom:柱子的起始位置,默认为None,表示从0开始。
  • align:柱子的对齐方式,'center' 表示居中对齐,'edge' 表示边缘对齐。
  • **kwargs:其他可选参数,如颜色、边框等。
1.2.1.2 基本示例
x = range(5)
data = [5, 20, 15, 25, 10]
# 设置图表的标题
plt.title("基本柱状图")
# 设置网格线,ls表示线型,这里设置为虚线;alpha表示透明度,范围从0到1
plt.grid(ls="--", alpha=0.5)
# 绘制柱状图
plt.bar(x, data)
# 显示图表
plt.show()

在这里插入图片描述

1.2.1.3 常用参数
  • bottom:设置柱状图起始位置。例如,如果想让柱子从某个值开始,可以通过设置 bottom 参数实现。
x = range(5)
data = [5, 20, 15, 25, 10]
bottom_value = 5
plt.bar(x, data, bottom=bottom_value)
plt.show()

在这里插入图片描述

  • color/facecolor:设置柱状图颜色。可以使用颜色名称(如 'red''blue')或十六进制颜色码(如 '#FF0000')。
x = range(5)
data = [5, 20, 15, 25, 10]
plt.bar(x, data, color='green')
plt.show()
  • edgecolor/ec:边框颜色。同样可以使用颜色名称或十六进制颜色码。
x = range(5)
data = [5, 20, 15, 25, 10]
plt.bar(x, data, edgecolor='black')
plt.show()
  • linestyle/ls:边框线型。例如 '-' 表示实线,'--' 表示虚线。
x = range(5)
data = [5, 20, 15, 25, 10]
plt.bar(x, data, edgecolor='black', linestyle='--')
plt.show()
  • linewidth/lw:边框宽度。可以设置一个数值来调整边框的粗细。
x = range(5)
data = [5, 20, 15, 25, 10]
plt.bar(x, data, edgecolor='black', linewidth=2)
plt.show()
  • tick_label:柱子刻度标签。用于为每个柱子添加自定义的标签。
x = range(5)
data = [5, 20, 15, 25, 10]
labels = ['A', 'B', 'C', 'D', 'E']
plt.bar(x, data, tick_label=labels)
plt.show()

1.2.2 同位置多柱状图

当需要在同一位置比较多个类别的数据时,可以使用同位置多柱状图。

countries = ['挪威', '德国', '中国', '美国', '瑞典']
gold = [16, 12, 9, 8, 8]
silver = [8, 10, 4, 10, 5]
bronze = [13, 5, 2, 7, 5]# 生成柱子的横坐标位置
x = np.arange(len(countries))
# 设置柱子的宽度
width = 0.2# 绘制金牌柱状图
plt.bar(x - width, gold, width, label='金牌')
# 绘制银牌柱状图
plt.bar(x, silver, width, label='银牌')
# 绘制铜牌柱状图
plt.bar(x + width, bronze, width, label='铜牌')# 设置x轴刻度标签
plt.xticks(x, countries)
# 显示图例
plt.legend()
# 显示图表
plt.show()

1.2.3 堆叠柱状图

堆叠柱状图用于展示多个类别数据的累计情况。

countries = ['挪威', '德国', '中国', '美国', '瑞典']
gold = [16, 12, 9, 8, 8]
silver = [8, 10, 4, 10, 5]
bronze = [13, 5, 2, 7, 5]# 绘制金牌柱状图
plt.bar(countries, gold, label='金牌')
# 绘制银牌柱状图,起始位置为金牌的高度
plt.bar(countries, silver, bottom=gold, label='银牌')
# 绘制铜牌柱状图,起始位置为金牌和银牌的高度之和
plt.bar(countries, bronze, bottom=np.array(gold)+np.array(silver), label='铜牌')# 显示图例
plt.legend()
# 显示图表
plt.show()

1.3 三、水平柱状图

水平柱状图与竖直柱状图类似,只是柱子的方向变为水平。

1.3.1 基本语法

plt.barh(y, width, height=0.8, left=None, **kwargs)
  • y:表示柱子的纵坐标位置。
  • width:表示柱子的宽度,对应的数据值。
  • height:柱子的高度,默认值为0.8。
  • left:柱子的起始位置,默认为None,表示从0开始。
  • **kwargs:其他可选参数,如颜色、边框等。

1.3.2 示例

movie = ['新蝙蝠侠', '狙击手', '奇迹笨小孩']
day1 = [4053, 2548, 1543]
day2 = [7840, 4013, 2421]# 设置柱子的高度
height = 0.3
# 绘制第一天的水平柱状图
plt.barh(np.arange(len(movie)), day1, height, label='第一天')
# 绘制第二天的水平柱状图,纵坐标位置在第一天的基础上偏移柱子高度
plt.barh(np.arange(len(movie)) + height, day2, height, label='第二天')# 设置y轴刻度标签
plt.yticks(np.arange(len(movie)) + height/2, movie)
# 显示图例
plt.legend()
# 显示图表
plt.show()

相关文章:

  • 查看matlab函数帮助文档的方法
  • 下拉框select标签类型
  • 《操作系统真象还原》第九章(2)——线程
  • 完整的 .NET 6 分布式定时任务实现(Hangfire + Redis 分布式锁)
  • 计算机视觉中,我们经常提到到训练pipeline是什么意思
  • leetcode 2364. 统计坏数对的数目 中等
  • RT-Thread开发文档合集
  • Python大小整数池及intern机制详解
  • 模块内聚:理解和优化模块设计的关键
  • Web3架构下的数据隐私与保护
  • 【unity实战】Animator启用root motion根运动动画,实现完美的动画动作匹配
  • 基于大模型的直肠息肉诊疗全流程风险预测与方案优化研究报告
  • Ethernet/IP转ProfiNet边缘计算网关在能源管理中的应用:跨系统数据聚合与智能分析
  • SQL SERVER里面也可以插入存储过程,操作TCP,WEBSOCKET吗?数据发生改变时用于通知客户端
  • 量子神经网络编译器开发指南:从理论突破到产业落地全景解析
  • AbMole推荐——肿瘤类器官加速癌症研究成果产出
  • 安全光幕的CE认证
  • 2025年人工智能指数报告(斯坦福)重点整理
  • 用ffmpeg 实现拉取h265的flv视频转存成264的mp4 实现方案
  • 智慧校园整体解决方案
  • 内部敏感文件遭万人共享,特朗普政府又曝安全漏洞
  • 普京宣布临时停火30小时
  • 广西东兰官方通报“村民求雨耕种”:摆拍,恶意炒作
  • 习近平结束对越南、马来西亚和柬埔寨国事访问回到北京
  • 一镇一链、一园一策,上海闵行发布重点产业区镇协同产业地图
  • 习近平会见柬埔寨人民党主席、参议院主席洪森