Python使用Matplotlib绘制多种柱形图的完整指南

沿途有光
沿途有光
发布时间:2026-10-15| 5人浏览过
原创

本文详细介绍如何使用Python的Matplotlib库绘制不同类型的柱形图。通过Pandas处理数据,演示了纵向、横向、簇状及堆叠柱形图的绘制方法,涵盖颜色配置、标签设置、排序展示及图例添加等关键步骤,帮助读者掌握数据可视化的核心技巧。

Python柱形图绘制基础

本文提供了使用Python绘制柱形图的具体代码示例,供读者参考学习。

纵向柱形图实现

#柱形图
import pandas
import numpy
import matplotlib 
from matplotlib import pyplot as plt
#导入数据
data_columns=pandas.read_csv('D://Python projects//reference data//6.4//data.csv')
#定义中文格式
font={'family':'MicroSoft Yahei',
      'weight':'bold',
      'size':12}
matplotlib.rc('font',**font)
#使用手机品牌作为分组列,月消费作为统计列
result_columns=data_columns.groupby(
        by=['手机品牌'],
        as_index=False)['月消费(元)'
                      ].agg({'月总消费':numpy.sum
                              })
#生成一个间隔为1的序列
index=numpy.arange(result_columns.月总消费.size)
#绘制纵向柱形图
plt.bar(index,result_columns['月总消费'])
#%matplotlib qt
plt.show()
#配置颜色
maincolor=(42/256,87/256,141/256,1)
plt.bar(index,
        result_columns['月总消费'])
plt.show()
#配置X轴标签
plt.bar(index,
        result_columns['月总消费'])
plt.xticks(index,result_columns.手机品牌)
plt.show()
#对数据进行降序排序后展示
result_asd=result_columns.sort_values(
        by='月总消费',
        ascending=False)
plt.bar(index,
        result_asd.月总消费,
        color=maincolor)
plt.xticks(index,result_asd.手机品牌)
plt.show()

运行上述代码后,生成的图表效果如下所示:

横向柱形图实现

#横向柱形图
result_asd=result_columns.sort_values(
        by='月总消费',
        ascending=False)
plt.barh(index,
        result_asd.月总消费,
        color=maincolor)
plt.yticks(index,result_asd.手机品牌)
plt.show()

横向柱形图的绘制结果如下:

簇状柱形图实现

#计算出交叉表的数据
result=data_columns.pivot_table(
        values='月消费(元)',
        index='手机品牌',
        columns='通信品牌',
        aggfunc=numpy.sum)

簇状柱形图的计算与绘制结果如下:

#定义三个颜色
index=numpy.arange(len(result))
mincolor=(42/256,87/256,141/256,1/3)
midcolor=(42/256,87/256,141/256,2/3)
maxcolor=(42/256,87/256,141/256,1)
#建立簇状柱形图
plt.bar(
        index,
        result['全球通'],
        color=mincolor,
        width=1/4)
plt.bar(
        index+1/4,
        result['动感地带'],
        color=midcolor,
        width=1/4)
plt.bar(
        index+1/2,
        result['神州行'],
        color=maxcolor,
        width=1/4)
plt.xticks(index+1/3,result.index)
#添加图例
plt.legend(['全球通','动感地带','神州行'])
plt.show()

对簇状柱形图数据进行排序后的展示效果如下:

#重新排序进行绘制
result=result.sort_values(
        by='神州行',
        ascending=False)
plt.bar(
        index,
        result['全球通'],
        color=mincolor,
        width=1/4)
plt.bar(
        index+1/4,
        result['动感地带'],
        color=midcolor,
        width=1/4)
plt.bar(
        index+1/2,
        result['神州行'],
        color=maxcolor,
        width=1/4)
plt.xticks(index+1/3,result.index)
plt.legend(['全球通','动感地带','神州行'])
plt.show()

堆叠柱形图的绘制结果如下:

堆叠与双向柱形图实现

#绘制堆叠柱形图
result=result.sort_values(
        by='神州行',
        ascending=False)
plt.bar(
        index,
        result['全球通'],
        color=maxcolor)
plt.bar(
        index,
        result['动感地带'],
        bottom=result['全球通'],
        color=midcolor)
plt.bar(
        index,
        result['神州行'],
        bottom=result['全球通']+result['动感地带'],
        color=mincolor)
plt.xticks(index,result.index)
plt.legend(['全球通','动感地带','神州行'])
plt.show()

双向柱形图的绘制结果如下:

#绘制双向柱形图
plt.barh(
        index,
        result['神州行'],
        color=midcolor)
plt.barh(
        index,
        -result['动感地带'],
        color=maxcolor)
plt.yticks(index,
           result.index)
plt.legend(['动感地带','神州行'])
plt.show()

以上即为本文介绍的全部内容,希望这些示例能对读者的学习有所帮助。

欢迎大家继续支持本站,获取更多技术资源。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。