欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Matplotlib之条形图绘制,数据可视化操作

程序员文章站 2022-09-21 10:02:50
1 条形图介绍条形图是用宽度相同的条形的高度或者长短来表示数据多少的图形。条形图可以横置或者纵置,纵置时也称为柱形图。特点: 能够使人一眼看出各个数据的大小,易于比较数据之间的差别。2 条形图绘制条形图通过bar()函数绘制• plt.bar(x, height) # 绘制以x为x轴位置,height为y轴位置的竖条形图示例一:假设获取到了2019年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据a = [“流浪地...

1 条形图介绍

条形图是用宽度相同的条形的高度或者长短来表示数据多少的图形。条形图可以横置或者纵置,纵置时也称为柱形图。
特点: 能够使人一眼看出各个数据的大小,易于比较数据之间的差别。Matplotlib之条形图绘制,数据可视化操作

2 条形图绘制

条形图通过bar()函数绘制
• plt.bar(x, height) # 绘制以x为x轴位置,height为y轴位置的竖条形图

示例一:
假设获取到了2019年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据

a = [“流浪地球”,“复仇者联盟4:终局之战”,“哪吒之魔童降世”,“疯狂的外星人”,“飞驰人生”,“蜘蛛侠:英雄远征”,“扫毒2天地对决”,“烈火英雄”,“大黄蜂”,“惊奇队长”,“比悲伤更悲伤的故事”,“哥斯拉2:怪兽之王”,“阿丽塔:战斗天使”,“银河补习班”,“狮子王”,“反贪风暴4”,“熊出没”,“大侦探皮卡丘”,“新喜剧之王”,“使徒行者2:谍影行动”,“千与千寻”]
b =[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22] 单位:亿

代码如下:

 from matplotlib import pyplot as plt import matplotlib import matplotlib
font = { 'family':'SimHei', 'weight':'bold', 'size':12 } matplotlib.rc("font", **font) a = ["流浪地球","复仇者联盟4:终局之战","哪吒之魔童降世","疯狂的外星人","飞驰人生","蜘蛛侠:英雄远征","扫毒2天地对决","烈火英雄","大黄蜂","惊奇队长","比悲伤更悲伤的故事","哥斯拉2:怪兽之王","阿丽塔:战斗天使","银河补习班","狮子王","反贪风暴4","熊出没","大侦探皮卡丘","新喜剧之王","使徒行者2:谍影行动","千与千寻"] b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22] #设置图片大小 plt.figure(figsize=(14,8)) #绘制条形图 plt.bar(a,b) #设置刻度及刻度标签 x_t = list(range(len(a))) plt.xticks(x_t,a,rotation=90) plt.show() 

效果图:
Matplotlib之条形图绘制,数据可视化操作

3 水平条形图绘制

水平条形图通过barh()函数绘制
• plt.barh(y, width) # 绘制以y为y轴位置,width为y轴位置的水平条形图

示例二:

# 以示例一的数据作图 a = ["流浪地球","复仇者联盟4:终局之战","哪吒之魔童降世","疯狂的外星人","飞驰人生","蜘蛛侠:英雄远征","扫毒2天地对决","烈火英雄","大黄蜂","惊奇队长","比悲伤更悲伤的故事","哥斯拉2:怪兽之王","阿丽塔:战斗天使","银河补习班","狮子王","反贪风暴4","熊出没","大侦探皮卡丘","新喜剧之王","使徒行者2:谍影行动","千与千寻"] b =[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22] plt.figure(figsize=(14,8)) x_t = range(len(a)) plt.yticks(x_t,a) # plt.bar(a,b) plt.barh(a,b,height=0.5) plt.show() 

效果图:
Matplotlib之条形图绘制,数据可视化操作

示例三:

水果 Q1销售额 Q2销售额
苹果 1000 1200
梨子 800 700
车厘子 3000 2800

代码一:
堆叠条形图: 没有封装相应的接口

fruit = ["苹果","梨子","车厘子"] Q1_sales = [1000,800,3000] Q2_sales = [1200,700,2800] #两者都没有设置位置,就重复  x是位置 plt.bar(fruit,Q1_sales,label="Q1销售额") plt.bar(fruit,Q2_sales,label="Q2销售额") plt.show() 

效果图:
Matplotlib之条形图绘制,数据可视化操作

代码二:

分组条形图

fruit = ["苹果","梨子","车厘子"] Q1_sales = [1000,800,3000] Q2_sales = [1200,700,2800] x_t = list(range(len(fruit))) # width 设置条形的宽度 width = 0.35 Q1 = [i-width/2 for i in x_t] # 将Q1的销售额放在x刻度的左边 Q2 = [i+width/2 for i in x_t] # 将Q2的销售额放在x刻度的右边 plt.bar(Q1,Q1_sales,width=0.35,label='Q1销售额') plt.bar(Q2,Q2_sales,width=0.35,label='Q1销售额') 

代码三:

#使用numpy import numpy as np
fruit = ["苹果","梨子","车厘子"] Q1_sales = [1000,800,3000] Q2_sales = [1200,700,2800] p=np.arange(len(fruit)) width=0.35 move=width/2 #p-move广播机制 plt.bar(p-move,Q1_sales,width=0.35,label="Q1销售额") plt.bar(p+move,Q2_sales,width=0.35,label="Q2销售额") # 设置数据标签 def set_data(x_p,x_q): for x,y in zip(x_p,x_q): plt.text(x,y+0.5,str(y),ha='center',va='bottom') set_data(Q1,Q1_sales) set_data(Q2,Q2_sales) plt.legend() plt.show() 

效果图:
Matplotlib之条形图绘制,数据可视化操作

本文地址:https://blog.csdn.net/m0_45209371/article/details/108241200