900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 11【matplotlib常用统计图】03绘制多次条形图

11【matplotlib常用统计图】03绘制多次条形图

时间:2020-12-17 21:05:30

相关推荐

11【matplotlib常用统计图】03绘制多次条形图

例题

假设你知道了列表a中电影分别在-09-14(b_14), -09-15(b_15), -09-16(b_16)三天的票房,为了展示列表中电影本身的票房以及同其他电影的数据对比情况,应该如何更加直观的呈现该数据?

a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]b_16 = [15746,312,4497,319]b_15 = [12357,156,2045,168]b_14 = [2358,399,2358,362]

数据来源:/movieday

如何绘制

代码+结果1.0

先绘制一组数据的条形图

# -*- coding: utf-8 -*-'''@Time : /11/29 10:58@Author : yuhui@Email : 3476237164@@FileName: matplotlib_9.py@Software: PyCharm'''"""11【matplotlib常用统计图】03绘制多次条形图""""""假设你知道了列表a中电影分别在-09-14(b_14), -09-15(b_15), -09-16(b_16)三天的票房,为了展示列表中电影本身的票房以及同其他电影的数据对比情况,应该如何更加直观的呈现该数据?a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]b_16 = [15746,312,4497,319]b_15 = [12357,156,2045,168]b_14 = [2358,399,2358,362]数据来源: /movieday"""from matplotlib import pyplot as plt# 解决中文乱码plt.rcParams["font.sans-serif"]=["KaiTi"]plt.rcParams["font.family"]="sans-serif"# 解决符号无法显示的问题plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题"""设置图形大小和图片品质"""fig=plt.figure(figsize=(16,9),dpi=100,)"""绘制横着的条形图"""a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]b_16 = [15746,312,4497,319]b_15 = [12357,156,2045,168]b_14 = [2358,399,2358,362]# 在一个画布上绘制出多个条形图# 多次使用plt.barh()方法# 先绘制一组数据的条形图plt.barh(range(len(a)),b_14,height=0.4,color=["#98FB98","#8FBC8F","#32CD32"],)plt.show()

再绘制出其他两组的条形图

# -*- coding: utf-8 -*-'''@Time : /11/29 10:58@Author : yuhui@Email : 3476237164@@FileName: matplotlib_9.py@Software: PyCharm'''"""11【matplotlib常用统计图】03绘制多次条形图""""""假设你知道了列表a中电影分别在-09-14(b_14), -09-15(b_15), -09-16(b_16)三天的票房,为了展示列表中电影本身的票房以及同其他电影的数据对比情况,应该如何更加直观的呈现该数据?a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]b_16 = [15746,312,4497,319]b_15 = [12357,156,2045,168]b_14 = [2358,399,2358,362]数据来源: /movieday"""from matplotlib import pyplot as plt# 解决中文乱码plt.rcParams["font.sans-serif"]=["KaiTi"]plt.rcParams["font.family"]="sans-serif"# 解决符号无法显示的问题plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题"""设置图形大小和图片品质"""fig=plt.figure(figsize=(16,9),dpi=100,)"""绘制横着的条形图"""a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]b_16 = [15746,312,4497,319]b_15 = [12357,156,2045,168]b_14 = [2358,399,2358,362]# 在一个画布上绘制出多个条形图# 多次使用plt.barh()方法# 由于height=0.3这个数值被经常用到,所以我们定义一个变量专门存储这个数据,在修改的时候也比较方便一些barh_height=0.3# 先绘制一组数据的条形图plt.barh(range(len(a)),b_14,height=barh_height,color="#98FB98",)"""再绘制出其他两组数据的条形图"""# 注意设置好y轴上的偏移量,否则,条形图在y轴上的位置一样,条形图会发生重合现象y_14=list(range(len(a))) # b_14数据对应的条形图在y轴上的位置y_15=[i+barh_height for i in y_14] # b_15数据对应的条形图在y轴上的位置y_16=[i+barh_height*2 for i in y_14] # b_16数据对应的条形图在y轴上的位置plt.barh(y_15,b_15,height=barh_height,color="#FF4500",)plt.barh(y_16,b_16,height=barh_height,color="#00BFFF",)plt.show()

设置y轴的刻度字符

效果图

如何实现

"""设置y轴刻度三组数据对应着一部电影的名字大致类似于=========================a b c电影的名字========================="""plt.yticks(y_15, # 为什么是y_15,因为它处于三组数据的中间,我们想要让电影的名字在三个条形图的中间显示出来a, # 内容)

添加图例

每一种颜色代表的是哪一组的数据

添加网格线

"""绘制网格线"""plt.grid(linestyle=":", # 线型color="#6495ED", # 颜色 CornflowerBlue矢车菊的蓝色#6495ED100,149,237alpha=0.4, # 透明度)

条形图的更多应用场景

数量统计频率统计(市场饱和度)

总结

在一个画布上绘制出多个条形图 需要多次使用plt.barh()方法 注意:要设置好y轴方向上的偏移量,否则数据对应的条形图可能会发生重叠 既不能太小,也不能太大太小:这一组条形图内部可能会发生图的重叠太大:这一组条形图与相邻组的条形图也会发生重叠一般偏移量,我们常常设置为条形图中每一条的宽度,所以,这也就意味着:条宽要设置好 设置y轴的刻度,使得这一组条形图对应着一组大的名字

"""设置y轴刻度三组数据对应着一部电影的名字大致类似于=========================a b c电影的名字========================="""plt.yticks(y_15, # 为什么是y_15,因为它处于三组数据的中间,我们想要让电影的名字在三个条形图的中间显示出来a, # 内容)

条形图的更多应用场景 数量统计频率统计(市场饱和度)

代码+结果

# -*- coding: utf-8 -*-'''@Time : /11/29 10:58@Author : yuhui@Email : 3476237164@@FileName: matplotlib_9.py@Software: PyCharm'''"""11【matplotlib常用统计图】03绘制多次条形图""""""假设你知道了列表a中电影分别在-09-14(b_14), -09-15(b_15), -09-16(b_16)三天的票房,为了展示列表中电影本身的票房以及同其他电影的数据对比情况,应该如何更加直观的呈现该数据?a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]b_16 = [15746,312,4497,319]b_15 = [12357,156,2045,168]b_14 = [2358,399,2358,362]数据来源: /movieday"""from matplotlib import pyplot as plt# 解决中文乱码plt.rcParams["font.sans-serif"]=["KaiTi"]plt.rcParams["font.family"]="sans-serif"# 解决符号无法显示的问题plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题"""设置图形大小和图片品质"""fig=plt.figure(figsize=(16,9),dpi=100,)"""绘制横着的条形图"""a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]b_16 = [15746,312,4497,319]b_15 = [12357,156,2045,168]b_14 = [2358,399,2358,362]# 在一个画布上绘制出多个条形图# 多次使用plt.barh()方法# 由于height=0.3这个数值被经常用到,所以我们定义一个变量专门存储这个数据,在修改的时候也比较方便一些barh_height=0.3# 先绘制一组数据的条形图plt.barh(range(len(a)),b_14,height=barh_height,color="#98FB98",label="9月14日",)"""再绘制出其他两组数据的条形图"""# 注意设置好y轴上的偏移量,否则,条形图在y轴上的位置一样,条形图会发生重合现象y_14=list(range(len(a))) # b_14数据对应的条形图在y轴上的位置y_15=[i+barh_height for i in y_14] # b_15数据对应的条形图在y轴上的位置y_16=[i+barh_height*2 for i in y_14] # b_16数据对应的条形图在y轴上的位置plt.barh(y_15,b_15,height=barh_height,color="#FF4500",label="9月15日",)plt.barh(y_16,b_16,height=barh_height,color="#00BFFF",label="9月16日",)"""设置y轴刻度三组数据对应着一部电影的名字大致类似于=========================a b c电影的名字========================="""plt.yticks(y_15, # 为什么是y_15,因为它处于三组数据的中间,我们想要让电影的名字在三个条形图的中间显示出来a, # 内容)"""添加图例"""plt.legend(loc="best")"""绘制网格线"""plt.grid(linestyle=":", # 线型color="#6495ED", # 颜色 CornflowerBlue矢车菊的蓝色#6495ED100,149,237alpha=0.4, # 透明度)plt.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。