【python画图】:从入门到精通绘制完美柱状图

news2025/5/19 20:59:29

目录

  • Python数据可视化:从入门到精通绘制完美柱状图
    • 一、基础篇:快速绘制柱状图
      • 1.1 使用Matplotlib基础绘制
      • 1.2 使用Pandas快速绘图
    • 二、进阶篇:专业级柱状图定制
      • 2.1 多系列柱状图
      • 2.2 堆叠柱状图
      • 2.3 水平柱状图
    • 三、专业参数速查表
      • Matplotlib bar() 核心参数
      • 常用方法扩展:
    • 四、专家级技巧
      • 4.1 动态柱状图
      • 4.2 大数据优化
    • 五、最佳实践总结

Python数据可视化:从入门到精通绘制完美柱状图

柱状图是数据可视化中最常用的图表类型之一,本文将带你从基础绘制到高级定制,全面掌握Python绘制柱状图的技巧,并附参数速查表。


一、基础篇:快速绘制柱状图

1.1 使用Matplotlib基础绘制

import matplotlib.pyplot as plt

data = [23, 45, 56, 78, 33]
labels = ['A', 'B', 'C', 'D', 'E']

plt.bar(labels, data)
plt.title('Basic Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.show()

效果展示:

在这里插入图片描述

1.2 使用Pandas快速绘图

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({
    'Category': ['A', 'B', 'C', 'D'],
    'Value': [25, 63, 42, 88]
})

df.plot(kind='bar', x='Category', y='Value')
plt.show()

效果展示:

在这里插入图片描述


二、进阶篇:专业级柱状图定制

2.1 多系列柱状图

import numpy as np
import matplotlib.pyplot as plt

labels = ['A', 'B', 'C', 'D', 'E']
men_means = [20, 35, 30, 35, 27]
women_means = [25, 32, 34, 20, 25]
x = np.arange(len(labels))

plt.bar(x - 0.2, men_means, 0.4, label='Men')
plt.bar(x + 0.2, women_means, 0.4, label='Women')
plt.xticks(x, labels)
plt.legend()
plt.show()

效果展示:

在这里插入图片描述

2.2 堆叠柱状图

plt.bar(labels, data1, label='Series 1')
plt.bar(labels, data2, bottom=data1, label='Series 2')

2.3 水平柱状图

plt.barh(labels, data, height=0.6)

三、专业参数速查表

Matplotlib bar() 核心参数

参数分类参数名称类型作用描述示例值
基本参数xarray-likex轴坐标位置[0,1,2,3]
heightarray-like柱体高度[10,20,30]
widthfloat柱体宽度0.8
样式参数colorstr/list柱体颜色‘blue’ 或 [‘r’,‘g’,‘b’]
edgecolorstr边框颜色‘black’
linewidthfloat边框宽度1.5
alphafloat(0-1)透明度0.7
标签参数tick_labellist坐标轴标签[‘A’,‘B’,‘C’]
labelstr图例标签‘Sales’
布局参数align{‘center’,‘edge’}对齐方式‘center’
orientation{‘v’,‘h’}方向‘v’
高级参数hatchstr填充图案‘/’, ‘O’, ‘x’
error_kwdict误差线参数{‘elinewidth’:2}
logbool对数坐标True

常用方法扩展:

# 添加数值标签
for rect in bars:
    height = rect.get_height()
    plt.annotate(f'{height}',
                 xy=(rect.get_x() + rect.get_width()/2, height),
                 ha='center', va='bottom')

# 设置样式模板
plt.style.use('ggplot')

# 保存高清图
plt.savefig('output.png', dpi=300, bbox_inches='tight')

四、专家级技巧

4.1 动态柱状图

from matplotlib.animation import FuncAnimation

fig = plt.figure()
def update(frame):
    plt.cla()
    # 更新数据逻辑
    plt.bar(...)
ani = FuncAnimation(fig, update, frames=100)

4.2 大数据优化

# 使用numpy优化计算
data = np.random.rand(10000)
plt.hist(data, bins=50)  # 直方图变种

# 降采样显示
plt.bar(range(0,1000,10), data[::10])

五、最佳实践总结

  1. 配色方案:使用seaborn颜色主题

    import seaborn as sns
    sns.set_palette("husl")
    
  2. 标签处理:自动旋转长标签

    plt.xticks(rotation=45, ha='right")
    
  3. 输出格式:矢量图优先

    plt.savefig('chart.svg', format='svg')
    

通过掌握这些技巧,你可以轻松制作出适合学术论文、商业报告等各种场景的专业级柱状图。建议保存参数速查表作为日常参考,并多加实践不同参数的组合效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2337528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基础知识:离线安装docker、docker compose

(1)离线安装docker 确认版本:Ubuntu 18.04 LTS - bionic 确认架构:X86_64 lsb_release -a uname -a 官方指南:https://docs.docker.com/engine/install/ 选择Ubuntu,发现页面上最低是Ubuntu20.04, 不要紧

畅游Diffusion数字人(27):解读字节跳动提出主题定制视频生成技术Phantom

畅游Diffusion数字人(0):专栏文章导航 前言:主题定制视频生成,特别是zero-shot主题定制视频生成,一直是当前领域的一个难点,之前的方法效果很差。字节跳动提出了一个技术主题定制视频生成技术Phantom,效果相比于之前的技术进步非常显著。这篇博客详细解读一下这一工作。 …

《Adaptive Layer-skipping in Pre-trained LLMs》- 论文笔记

作者:Xuan Luo, Weizhi Wang, Xifeng Yan Department of Computer Science, UC Santa Barbara xuan_luoucsb.edu, weizhiwangucsb.edu, xyancs.ucsb.edu 1. 引言与动机 1.1 背景 LLM 的成功与挑战: 大型语言模型 (LLMs) 在翻译、代码生成、推理等任务上取得巨大成…

微信小程序实现table样式,自带合并行合并列

微信小程序在代码编写过程好像不支持原生table的使用&#xff0c;在开发过程中偶尔又得需要拿table来展示。 1.table效果展示 1.wxml <view class"table-container"><view class"table"><view class"table-row"><view cla…

电脑的品牌和配置

我的笔记本是2020年买的&#xff0c;之前的订单找不到了&#xff0c;就知道是联想&#xff0c;不清楚具体的配置。 本文来源&#xff1a;腾讯元宝 检查系统信息&#xff08;Windows&#xff09; 这通常是 ​​联想&#xff08;Lenovo&#xff09;​​ 的型号代码。 81XV 是联想…

Redis面试——常用命令

一、String &#xff08;1&#xff09;设置值相关命令 1.1.1 SET 功能&#xff1a;设置一个键值对&#xff0c;如果键已存在则覆盖旧值语法&#xff1a; SET key value [EX seconds] [PX milliseconds] [NX|XX]EX seconds&#xff1a;设置键的过期时间为 seconds 秒 PX milli…

Swin-Transformer-UNet改进:融合Global-Local Spatial Attention (GLSA) 模块详解

目录 1.模块概述 2.swinUNet网络 3. 完整代码 1.模块概述 Global-Local Spatial Attention (GLSA) 是一种先进的注意力机制模块,专为计算机视觉任务设计,能够同时捕捉全局上下文信息和局部细节特征。 该模块通过创新的双分支结构和自适应融合机制,显著提升了特征表示能…

ubuntu 向右拖动窗口后消失了、找不到了

这是目前单显示器的设置&#xff0c;因为实际只有1个显示器&#xff0c;之前的设置如下图所示&#xff0c;有2个显示器&#xff0c;一个主显示器&#xff0c;一个23寸的显示器 ubuntu 22.04 系统 今天在操作窗口时&#xff0c;向右一滑&#xff0c;发现这个窗口再也不显示了、找…

2025最新版微软GraphRAG 2.0.0本地部署教程:基于Ollama快速构建知识图谱

一、前言 微软近期发布了知识图谱工具 GraphRAG 2.0.0&#xff0c;支持基于本地大模型&#xff08;Ollama&#xff09;快速构建知识图谱&#xff0c;显著提升了RAG&#xff08;检索增强生成&#xff09;的效果。本文手把手教你如何从零部署&#xff0c;并附踩坑记录和性能实测…

libevent服务器附带qt界面开发(附带源码)

本章是入门章节&#xff0c;讲解如何实现一个附带界面的服务器&#xff0c;后续会完善与优化 使用qt编译libevent源码演示视频qt的一些知识 1.主要功能有登录界面 2.基于libevent实现的服务器的业务功能 使用qt编译libevent 下载这个&#xff0c;其他版本也可以 主要是github上…

智能体数据分析

数据概览&#xff1a; 展示智能体的累计对话次数、累计对话用户数、对话满意度、累计曝光次数。数据分析&#xff1a; 统计对话分析、流量分析、用户分析、行为分析数据指标&#xff0c;帮助开发者完成精准的全面分析。 ps&#xff1a;数据T1更新&#xff0c;当日12点更新前一天…

STM32(M4)入门: 概述、keil5安装与模板建立(价值 3w + 的嵌入式开发指南)

前言&#xff1a;本教程内容源自信盈达教培资料&#xff0c;价值3w&#xff0c;使用的是信盈达的405开发版&#xff0c;涵盖面很广&#xff0c;流程清晰&#xff0c;学完保证能从新手入门到小高手&#xff0c;软件方面可以无基础学习&#xff0c;硬件学习支持两种模式&#xff…

采用若依vue 快速开发系统功能模块

文章目录 运行若依项目 科室管理科室查询-后端代码实现科室查询-前端代码实现科室名称状态搜索科室删除-后端代码实现科室删除-前端代码实现科室新增-后端代码实现科室新增-前端代码实现科室修改-后端代码实现前端代码实现角色权限实现 运行若依项目 运行redis 创建数据库 修改…

HTML:表格数据展示区

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>人员信息表</title><link rel"styl…

Oracle测试题目及笔记(单选)

所有题目来自于互联网搜索 当 Oracle 服务器启动时&#xff0c;下列哪种文件不是必须的&#xff08;D&#xff09;。 A&#xff0e;数据文件 B&#xff0e;控制文件 C&#xff0e;日志文件 D&#xff0e;归档日志文件 数据文件、日志文件-在数据库的打开阶段使用 控制文件-在数…

Jmeter创建使用变量——能够递增递减的计数器

Jmeter创建使用变量——能够递增递减的计数器 如下图所示&#xff0c;创建一个 取值需限定为0 2 4这三个值内的变量。 Increment&#xff1a;每次迭代后 递增的值&#xff0c;给计数器增加的值 Maximum value&#xff1a;计数器的最大值&#xff0c;如果超过最大值&#xff0…

数据结构之BFS广度优先算法(腐烂的苹果)

队列这个数据结构在很多场景下都有使用&#xff0c;比如在实现二叉树的层序遍历&#xff0c;floodfill问题(等等未完成)中&#xff0c;都需要借助队列的先进先出特性&#xff0c;下面给出这几个问题的解法 经典的二叉树的层序遍历 算法图示&#xff0c;以下图所示的二叉树为例…

火车头采集动态加载Ajax数据(无分页瀑布流网站)

为了先填充好数据在上线&#xff0c;在本地搭建了一个网站&#xff0c;并用火车头采集数据填充到里面。 开始很上手&#xff0c;因为找的网站的分类中是有分页的。很快捷的找到页面标识。 但是问题来了&#xff0c;如今很多网站都是采用的Ajax加载数据&#xff0c;根本没有分…

Node.js模块化与npm

目录 一、模块化简介 二、CommonJS 规范 1. 基本语法 2. 导出模块 3. 导入模块 三、ECMAScript 标准&#xff08;ESM&#xff09; 1. 启用 ESM 一、默认导出与导入 1. 基本语法 2. 默认导出&#xff08;每个模块仅一个&#xff09; 3. 默认导入 二、命名导出与导入…

nginx中的代理缓存

1.缓存存放路径 对key取哈希值之后&#xff0c;设置cache内容&#xff0c;然后得到的哈希值的倒数第一位作为第一个子目录&#xff0c;倒数第三位和倒数第二位组成的字符串作为第二个子目录&#xff0c;如图。 proxy_cache_path /xxxx/ levels1:2 2.文件名哈希值