如何用matplotlib绘制朋友吃糖颗数的双柱状图
Admin 2022-09-15 群英技术资讯 1090 次浏览
这篇文章将为大家详细讲解有关“如何用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°效果如下:

横坐标标签旋转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)
加了具体数值的柱状图效果如下:

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

后续有时间再继续补充扩展功能哦~
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
很多时候我们需要对数据进行格式化,你有没有对python中的数据格式化感到头疼呢?pprint会帮你很大的忙pprint模块中使用的格式化可以按照一...
这篇文章主要介绍了python列表:开始、结束、步长值实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了Python的flask常用函数route(),文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
并发编程是实现多任务协同处理,改善系统性能的方式。Python中实现并发编程主要依靠进程、线程和协程,本文将通过示例详解三者的区别,感兴趣的可以了解一下
这篇文章主要介绍了在Python中如何让字典保持有序,文章基于python的相关资料展开详细内容,需要的小伙伴可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008