利用 matplotlib 制作条形图

利用 matplotlib 制作条形图

排列在工作表的列或行中的数据可以绘制到柱状图(条形图)中。

特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)

我们用一个例子来描述利用matplotlib怎样制作条形图。
例:假设你获取到了2019年内地电影票房前20的电影(列表a)和电影票房数据(列表b),请展示该数据。

1、纵向条形图:
from matplotlib import pyplot as plt
from matplotlib import font_manager
#a和b为分别的两类数据,展示为两个不同的条形图
a = ['流浪地球','疯狂的外星人','飞驰人生','大黄蜂','熊出没-原始时代','新喜剧之王']
b = [38.13,19.85,14.89,11.36,6.47,5.93]
#设置字体
my_font = font_manager.FontProperties(fname='F:/HYTianZhenTi.ttf',size=10)
plt.figure(figsize=(20,8),dpi=80)

在这里插入图片描述
在条形图中,还可以指定显示的颜色,以及在每个条形图上显示对应的数据等。

from matplotlib import pyplot as plt
from matplotlib import font_manager

a = ['流浪地球','疯狂的外星人','飞驰人生','大黄蜂','熊出没-原始时代','新喜剧之王']
b = [38.13,19.85,14.89,11.36,6.47,5.93]
my_font = font_manager.FontProperties(fname='F:/HYTianZhenTi.ttf',size=20)
plt.figure(figsize=(20,8),dpi=80)
#
#绘制条形图
#这是在给b列表的数据设置颜色,分别为red,green等,可以进行缩写。
rects = plt.bar(a,[float(i) for i in b], width=0.3, color=['r','g','b','r','g','b'])
#设置x,y轴的刻度,x轴为a列表的数据即电影名称
plt.xticks(range(len(a)), a, fontproperties=my_font)
plt.yticks(range(0,41,5), range(0,41,5))
#设置x轴和y轴的名称
plt.xlabel('电影',fontproperties=my_font)
plt.ylabel('票房',fontproperties=my_font)

#在条形图上加标注(水平居中)
for rect in rects:
    height = rect.get_height()
    plt.text(rect.get_x() + rect.get_width() / 2, height + 0.3, str(height), ha='center')

plt.show()

在这里插入图片描述

2、横向条形图:
from matplotlib import pyplot as plt
from matplotlib import font_manager

a = ['流浪地球','疯狂的外星人','飞驰人生','大黄蜂','熊出没-原始时代','新喜剧之王']
b = [38.13,19.85,14.89,11.36,6.47,5.93]
my_font = font_manager.FontProperties(fname='F:/HYTianZhenTi.ttf',size=10)
plt.figure(figsize=(20,8),dpi=80)

#绘制横向条形图
#height=0.5 条形的宽度
rects = plt.barh(range(len(a)),b, height=0.5,color='y')
plt.yticks(range(len(a)),a,fontproperties=my_font,rotation=45)

plt.xlabel('电影',fontproperties=my_font)
plt.ylabel('票房',fontproperties=my_font)

#在条形图上加标注(水平居中)
for rect in rects:
    width = rect.get_width()
    plt.text(width,rect.get_y()+0.3/2, str(width), va='center')

plt.show()

在这里插入图片描述

3、并列和罗列条形图:
from matplotlib import pyplot as plt
import numpy as np
index=np.arange(4)
BJ=[50,53,55,60]
Sh=[44,66,55,41]
#并列
plt.bar(index,BJ,width=0.3,color='blue')
plt.bar(index+0.3,Sh,width=0.3,color='green')

plt.xticks(index+0.3/2,index)
#罗列
# plt.bar(index,Sh,bottom=BJ,width=0.3,color='green')
plt.show()

在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章