python如何利用matplotlib绘制并列双柱状图并标注数值

 更新时间:2022年04月28日 09:10:01   作者:小白白程序员  
Python之中最好的图表库叫matplotlib,matplotlib,顾名思义就是提供了一整套和matlab相似的API,它的文档相当完备,下面这篇文章主要给大家介绍了关于python如何利用matplotlib绘制并列双柱状图并标注数值的相关资料,需要的朋友可以参考下

项目场景:

Python项目需要画两组数据的双柱状图,以下以一周七天两位小朋友吃糖颗数为例进行演示,用matplotlib库实现

代码:

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

def drawHistogram():
    matplotlib.rc("font", family='MicroSoft YaHei')
    list1 = np.array([5, 2, 1, 0, 8, 0, 6])   # 柱状图第一组数据
    list2 = np.array([9, 5, 1, 2, 9, 2, 0])   # 柱状图第二组数据
    length = len(list1)
    x = np.arange(length)   # 横坐标范围
    listDate = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]

    plt.figure()
    total_width, n = 0.8, 2   # 柱状图总宽度,有几组数据
    width = total_width / n   # 单个柱状图的宽度
    x1 = x - width / 2   # 第一组数据柱状图横坐标起始位置
    x2 = x1 + width   # 第二组数据柱状图横坐标起始位置

    plt.title("一周每天吃悠哈软糖颗数柱状图")   # 柱状图标题
    # plt.xlabel("星期")   # 横坐标label 此处可以不添加
    plt.ylabel("吃悠哈软糖颗数(个)")   # 纵坐标label
    plt.bar(x1, list1, width=width, label="小s吃糖数")
    plt.bar(x2, list2, width=width, label="小y吃糖数")
    plt.xticks(x, listDate)   # 用星期几替换横坐标x的值
    plt.legend()   # 给出图例
    plt.show()

if __name__ == '__main__':
    drawHistogram()

效果图:

一周每天吃悠哈软糖颗数柱状图

扩展功能及代码:

扩展功能一

如果横坐标标签比较长或是文字比较多,以一定角度倾斜展示,上文中代码这一行:

plt.xticks(x, listDate)

可以改为:

plt.xticks(x, listDate, rotation=30) # rotation为标签旋转角度

横坐标标签旋转30°效果如下:

横坐标label旋转30度

横坐标标签旋转90°效果如下:

横坐标label旋转90度

扩展功能二

如果希望具体的数据值展示在柱状图中,可以在代码 plt.legend() 前加入如下代码:

for a, b in zip(x1, list1):
	plt.text(a, b + 0.1, '%.0f' % b, ha='center', va='bottom', fontsize=7)

for a, b in zip(x2, list2):
	plt.text(a, b + 0.1, '%.0f' % b, ha='center', va='bottom', fontsize=7)

加了具体数值的柱状图效果如下:

加了数值的柱状图

补充:Python画图实现同一结点多个柱状图

import numpy as np
x = [1,2]   #横坐标
y = [3,4]   #第一个纵坐标
y1 = [5,6]   #第二个纵坐标
x = np.arange(len(x))  #首先用第一个的长度作为横坐标
width = 0.05    #设置柱与柱之间的宽度
fig,ax = plt.subplots()
ax.bar(x,y,width,alpha = 0.9)
ax.bar(x+width,y1,width,alpha = 0.9,color= 'red')
ax.set_xticks(x +width/2)#将坐标设置在指定位置
ax.set_xticklabels(x)#将横坐标替换成
plt.show()

后续有时间再继续补充扩展功能哦~

总结

到此这篇关于python如何利用matplotlib绘制并列双柱状图并标注数值的文章就介绍到这了,更多相关python matplotlib绘制并列双柱状图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python爬虫入门教程之糗百图片爬虫代码分享

    python爬虫入门教程之糗百图片爬虫代码分享

    这篇文章主要介绍了python爬虫入门教程之糗百图片爬虫代码分享,本文以抓取糗事百科内涵图为需求写了一个爬虫,,需要的朋友可以参考下
    2014-09-09
  • python获取网页中所有图片并筛选指定分辨率的方法

    python获取网页中所有图片并筛选指定分辨率的方法

    下面小编就为大家分享一篇python获取网页中所有图片并筛选指定分辨率的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • python实现按行分割文件

    python实现按行分割文件

    这篇文章主要为大家详细介绍了python如何实现按行分割文件,python按指定行数分割文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • python实现简单文件读写函数

    python实现简单文件读写函数

    这篇文章主要为大家详细介绍了python实现简单文件读写函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • Python实现8种常用抽样方法

    Python实现8种常用抽样方法

    抽样是统计学、机器学习中非常重要,本文就用Python实现抽样方法,主要介绍了八种方法,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Python面向对象特殊属性及方法解析

    Python面向对象特殊属性及方法解析

    这篇文章主要介绍了Python面向对象特殊属性及方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 一篇文章搞懂python的转义字符及用法

    一篇文章搞懂python的转义字符及用法

    这篇文章主要介绍了一篇文章搞懂python的转义字符及用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 使用python将请求的requests headers参数格式化方法

    使用python将请求的requests headers参数格式化方法

    今天小编就为大家分享一篇使用python将请求的requests headers参数格式化方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Pandas 对Dataframe结构排序的实现方法

    Pandas 对Dataframe结构排序的实现方法

    下面小编就为大家分享一篇Pandas 对Dataframe结构排序的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python 爬取古诗文存入mysql数据库的方法

    python 爬取古诗文存入mysql数据库的方法

    这篇文章主要介绍了python 爬取古诗文存入mysql数据库的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01

最新评论