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

作者:小白白程序员 时间:2022-08-06 22:00:33 

项目场景:

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()

效果图:

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

扩展功能及代码:

扩展功能一

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

plt.xticks(x, listDate)

可以改为:

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

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

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

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

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

扩展功能二

如果希望具体的数据值展示在柱状图中,可以在代码 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如何利用matplotlib绘制并列双柱状图并标注数值

补充: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绘制并列双柱状图并标注数值

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

来源:https://blog.csdn.net/qq_39691492/article/details/119422424

标签:python,matplotlib,双柱状图
0
投稿

猜你喜欢

  • python3实现网页版raspberry pi(树莓派)小车控制

    2021-05-05 05:35:18
  • 如何利用Python分析出微信朋友男女统计图

    2021-12-03 15:46:09
  • [翻译]标记语言和样式手册 chapter 6 短语元素

    2008-01-25 16:37:00
  • 3个JS控制图片滚动的效果

    2007-10-23 13:40:00
  • 微信小程序实现经典window扫雷游戏

    2024-04-28 09:52:45
  • electron-vite新一代electron开发构建工具

    2023-07-02 17:03:57
  • python用线性回归预测股票价格的实现代码

    2023-01-24 02:14:31
  • 使用 Django Highcharts 实现数据可视化过程解析

    2022-12-27 19:18:51
  • 自动更新程序的设计框架

    2009-08-12 13:00:00
  • php调用快递鸟接口实例代码

    2023-11-17 13:48:49
  • 使用Python三角函数公式计算三角形的夹角案例

    2022-12-06 04:09:33
  • Javascript调用XML制作连动下拉框

    2007-09-17 12:55:00
  • SQL Server中字符串函数的用法详解

    2024-01-14 05:42:56
  • Python实现的查询mysql数据库并通过邮件发送信息功能

    2024-01-21 11:51:36
  • Python实现求解括号匹配问题的方法

    2023-08-02 08:05:47
  • js鼠标按键事件和键盘按键事件用法实例汇总

    2024-04-17 10:04:29
  • python 数据生成excel导出(xlwt,wlsxwrite)代码实例

    2022-09-17 23:37:31
  • python绘制箱型图

    2022-10-11 21:33:20
  • Python3使用SMTP发送带附件邮件

    2022-02-10 12:05:53
  • python自动化测试实例解析

    2023-12-13 17:10:27
  • asp之家 网络编程 m.aspxhome.com