当前位置: 首页 > 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()
http://www.xdnf.cn/news/9793.html

相关文章:

  • 【Java报错】数据库查询报错this is incompatible with sql_mode=only_full_group_by
  • MAC-如果是分页查询,怎么分批次in;基于多线程的分页查询工具类
  • 492Q 型气缸盖双端面铣削组合铣床总体设计
  • Jenkins 多分支流水线: 如何创建用于 Jenkins 状态检查的 GitHub 应用
  • vue3学习笔记之条件渲染
  • 「数据可视化 D3系列」入门第八章:动画效果详解(让图表动起来)
  • 「GitHub热榜」AIGC系统源码:AI问答+绘画+PPT+音乐生成一站式
  • 第12篇:Linux程序访问控制FPGA端Switch<一>
  • Yocto项目实战教程 · 第4章:4.2小节-菜谱
  • AWS Elastic Beanstalk的部署Python Flask后端服务(Hello,World)
  • JavaScript 性能优化实战
  • 决战浏览器渲染:减少重绘(Repaint)与重排(Reflow)的性能优化策略
  • 基于springBoot+vue的PC 端学习系统(源码+lw+部署文档+讲解),源码可白嫖!
  • C++ AVL树
  • HAL库通过FATFS和SDIO+DMA写入SD卡数据错误
  • 2025MathorcupD题 短途运输货量预测及车辆调度问题 保姆级教程讲解|模型讲解
  • L2-006 树的遍历
  • DHTMLX宣布推出支持 Redux、TypeScript 和 MUI 的 React Gantt甘特图控件
  • redis利用备忘录
  • Jsp技术入门指南【五】详细讲解jsp结构页面
  • 【含文档+PPT+源码】基于Python爬虫二手房价格预测与可视化系统的设计与实现
  • 论文阅读:2024 arxiv AI Safety in Generative AI Large Language Models: A Survey
  • 自然语言处理入门7——注意力机制
  • 数据结构——顺序表(C语言实现)
  • [250418] 智谱 AI 发布新一代模型,同时推出新域名 Z.ai
  • yocto编译使用共享缓存
  • IntelliSense 已完成初始化,但在尝试加载文档时出错
  • 前端单元测试实战:如何开始?
  • Vue2+Vue3 130~180集学习笔记
  • Google Colab测试部署Qwen大模型,实现PDF转MD场景OCR 识别(支持单机环境)