笔搜屋

繁体版 简体版
笔搜屋 > python代码 > 第15章 数据可视化Ⅱ

第15章 数据可视化Ⅱ

章节错误,点此举报(免注册),举报后维护人员会在两分钟内校正章节内容,请耐心等待,并刷新页面。

二、柱状图

柱状图是一种用矩形柱来表示数据分类的图表,可以垂直绘制,也可以水平绘制。它的高度与其所表示的数值成正比关系。

柱状图显示了不同类别之间的比较关系,图表的水平轴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章 数据可视化Ⅱ

『加入书签,方便阅读』
123456