二、柱状图
柱状图是一种用矩形柱来表示数据分类的图表,可以垂直绘制,也可以水平绘制。它的高度与其所表示的数值成正比关系。
柱状图显示了不同类别之间的比较关系,图表的水平轴X指定被比较的类别,垂直轴Y则表示具体的类别值。
1.绘制方法
柱状图主要有三种类型,竖直柱状图、水平柱状图和堆叠柱状图。
〇竖直柱状图
1)用到matplotlib库中的pyplot模块,并导入。
代码:
pip install matplotlib #安装
from matplotlib import pyplot
2)准备数据。竖直柱状图有两组内容,分别为x轴和y轴,设置时分别用两个列表储存起来。
代码:
x_data = ['事件1','事件2','事件3']
y_data = [30,20,50]
3)画图。使用pyplot模块中的bar函数,括号中填写需要绘制的参数,必须包括x轴和y轴,顺序是先x后y。
代码:
pyplot.bar(x_data,y_data)
4)显示柱状图。需要用到pyplot中的show()函数。
代码:
pyplot.show()
〇水平柱状图
其中步骤1、2和竖直柱状图相同。
画图时使用pyplot中的barh函数,类似于直接将bar替换为barh,不同的是xy轴位置调换。
〇堆叠柱状图
其实就是多个柱状图的组合,直接将多个柱状图代码写上去就行了。
2.美化
以下内容若无特殊说明,都以竖直柱状图为参考。
1)标题。添加柱状图的标题,需要使用到title()函数,括号中填写标题名称,接在pyplot后面。
代码:
pyplot.title('标题')
2)坐标轴标签。分别使用到xlabel()和ylabel()函数,括号中填写分别填写标签名称,接在pyplot后面。
代码:
pyplot.xlabel('x标签')
pyplot.ylabel('y标签')
3)宽度。柱状图宽度默认为0.8,有点粗,可以使用width参数调节宽度,宽度范围为0~1,将它写在bar()的括号中。
代码:
pyplot.bar(x_data,y_data,width=0.4)
4)颜色。自定义柱状图的颜色,调节color参数。
这里颜色有三种写法,一是使用预定义的颜色名称,它们同样也是英语中的颜色单词;二是十六进制颜色代码,使用时应以井号(#)开头,它也用来调jj文案(pc)颜色;三是RGB颜色模型,它是一个元组,有三个参数。将它写在bar()的括号中。
代码:
pyplot.bar(x_data,y_data,width=0.4,color='#ff0000')
5)填充。调节fill参数,True和False,默认为True,表示填充柱状图。如果设置为False,则不填充。
代码:
pyplot.bar(x_data,y_data,width=0.4,color='#ff0000',fill=True)
6)边线。
颜色:edgecolor参数用于设置边线颜色,如果不设置,则默认为与填充颜色相同,写在bar()小括号中。
宽度:linewidth参数用于设置边线的宽度,如果不设置,则默认为1,写在bar()小括号中。
代码:
pyplot.bar(x_data,y_data,width=0.4,color='#ff0000',fill=True,edgecolor='blue',linewidth=1)
7)边线样式。linestyle参数用来设置边线样式,默认为实线,可以设置其它样式:实线(solid),虚线(dashed),点线(dotted),点划线(dashdot)。
代码:
pyplot.bar(x_data,y_data,width=0.4,color='#ff0000',fill=True,edgecolor='blue',linewidth=1,linestyle='dotted')
8)透明度。调整参数alpha,范围为0~1,默认为1。
代码:
pyplot.bar(x_data,y_data,width=0.4,color='#ff0000',fill=True,edgecolor='blue',linewidth=1,alpha=1,linestyle='dotted')
9)图例。legend()用来给柱状图添加图例,括号中填写一个列表,它一般在复式柱状图中使用。
代码:
pyplot.legend(['图例1','图例2'])
〇复式柱状图
即多个柱状图的组合,便于进行比较。和堆叠柱状图不同的是,它的几根柱子并不是叠在一起的,而是彼此不重叠且紧密贴合。
这里以有两组数据的复式柱状图为例。
假设每根柱子的宽度为0.4,两根为一组,初始每组之间的距离为1。为了让它们不重合,相应的需要调整它们的坐标。例如,第一根柱子坐标应该是0.8,第二根是1.2,第三根是1.8……以此类推。
两组数据分别写一次代码,将bar()括号中表示x轴数据的列表替换为储存坐标的列表。
代码:
y_data1 = [30,20,50]
y_data2 = [40,20,40]
a1 = [0.8,1.8,2.8]
a2 = [1.2,2.2,3.2]
pyplot.bar(a1,y_data1,width=0.4,color='#ff0000')
pyplot.bar(a2,y_data2,width=0.4,color='pink')
再加上图例:
pyplot.legend(['图例1','图例2'])
^一个问题出现了,这时x轴的内容变成了1,2,3,为了修改x轴显示的内容,需要使用到xticks(),括号中填写两个列表,用逗号隔开,前一个列表是x轴坐标,后者是x轴显示内容。
代码:
pyplot.xticks([1,2,3],['事件1','事件2','事件3'])
##总代码##
from matplotlib import pyplot
pyplot.rcParams['font.sans-serif'] = 'simhei'
x_data = ['事件1','事件2','事件3']
y_data1 = [30,20,50]
y_data2 = [40,20,40]
a1 = [0.8,1.8,2.8]
a2 = [1.2,2.2,3.2]
pyplot.bar(a1,y_data1,width=0.4,color='#ff0000',fill=True,edgecolor='blue',linewidth=1,linestyle='--',alpha=1,linestyle='dotted')
pyplot.bar(a2,y_data2,width=0.4,color='pink',fill=True,edgecolor='hotpink',linewidth=1,linestyle='--',alpha=1,linestyle='dotted')
pyplot.title('标题')
pyplot.xlabel('x标签')
pyplot.ylabel('y标签')
pyplot.xticks([1,2,3],x_data)
pyplot.legend(['图例1','图例2'])
pyplot.show()
【注】
legend n. 图例
bar n. 条
title n. 标题
fill v. 填满
tick v. 给……打记号
data n. 数据
(悄悄说一声,其实edgecolor可以缩写为ec,linewidth可以缩写为lw,linestyle可以缩写为ls)
#很多人喜欢把pyplot缩写为plt,不能直接写,如果想要直接用,需要将第一行导入代码替换为如下:
import matplotlib.pyplot as plt
单词as是‘作为’的意思
内容不全,更多上网搜索即可,
后面还有······
第15章 数据可视化Ⅱ