python数据可视化之matplotlib实践 基础篇(2)

目录

一、直线类

1、柱状图bar()函数

2、条形图barh()

3、分块图

多数据并列柱状图

 多数据平行条形图

4、堆积图

堆积柱状图

 堆积条形图

二、圆类

1、饼状图pie()

2、嵌套饼图


本篇讲述的是matplotlib绘制简单图形的相关知识,话不多说,和小编一起学习吧

一、直线类

1、柱状图bar()函数

调用方式:

plt.bar(x,y,width,align="center",color="c",hatch="/")

各个参数说明:

x:x轴上的定性数据的类别

y:每种定性数据的类别数量

align:x轴上的对齐方式

color:颜色

width:柱子的宽度,在0~1之间

hatch:是否加斜线

tick_label:柱状图的刻度标签,也可直接将标签赋值给x

alpha:柱体的颜色透明度

可能乍一看,不大能够理解各个参数的含义,尤其是tick_label,不要急,敲一段代码,自己实践实践,可能就理解了

例题:伍老师今天给同学们上课文《白杨礼赞》,下列是班上同学回答问题的次数,请将同学与回答问题的次数用柱状图表示出来。

那么一下两种情况都是可以完成的:

代码1:

import matplotlib.pyplot as plt
import matplotlib as mpl
#以下操作可以使图像里显现出中文
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

name=["张三","李四","王五","赵六","马七"]
times=[4,8,3,5,1]
plt.bar(name,times,hatch="/")

plt.show()

代码2:

import matplotlib.pyplot as plt
import matplotlib as mpl
#以下操作可以使图像里显现出中文
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

name=[1,2,3,4,5]
times=[4,8,3,5,1]
plt.bar(name,times,hatch="/",tick_label=["张三","李四","王五","赵六","马七"])

plt.show()

结果均为

python数据可视化之matplotlib实践 基础篇(2)_第1张图片

2、条形图barh()

调用方式:

plt.barh(x,y,width,align="center",color="c",hatch="/")

各个参数说明:

x:x轴上的定性数据的类别

y:每种定性数据的类别数量

align:x轴上的对齐方式

color:颜色

width:柱子的宽度,在0~1之间

hatch:是否加斜线

tick_label:柱状图的刻度标签,也可直接将标签赋值给x

alpha:柱体的颜色透明度

说白了就是横着的柱状图!!所以参数都极其相似!

3、分块图

多数据并列柱状图

如果想让数据对比图更加强烈,我们会想到绘制并列柱状图,而不是画多个图。

其实很简单,就在原有的基础上,再在没个柱子的右边添加一个柱子(在x的位置)

下面上一个例子,大家自行体会一下:

例子:伍老师的学生刘奕然还有周末各个月份的语文成绩如下,请用多数据并列柱状图表示出二者的语文成绩差距。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
#以下操作可以使图像里显现出中文
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

#设置数据
x=np.arange(5)
bar_width=0.35
score1=[92,84,97,81,85]
score2=[88,79,93,87,84]
month=["二月","三月","四月","五月","六月"]
#绘制柱状图
plt.bar(x,score1,bar_width,hatch="/",alpha=0.5,label="刘奕然")
plt.bar(x+bar_width,score2,bar_width,color="r",hatch="/",alpha=0.5,label="周末")
#绘制月份标注位
plt.xticks(x+bar_width/2,month)
#设置坐标
plt.xlabel("月份")
plt.ylabel("语文考试成绩")
#显示标签
plt.legend()
plt.show()

绘制结果如下图:

python数据可视化之matplotlib实践 基础篇(2)_第2张图片

 多数据平行条形图

已知多数据平行条形图和多数据并列柱状图的使用规则类似,请自己动手完成下面的习题:

例题:已知伍老师所在的快班八年级一班与隔壁平行班八年级二班每个月的语文平均分如下图:

 请绘制多数据平行条形图来反映二者的差距。

同理,也是在x上动手脚

 小编写的代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
#以下操作可以使图像里显现出中文
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

#设置数据
x=np.arange(5)
bar_width=0.35
score1=[89,85,91,84,90]
score2=[79,76,83,80,81]
month=["二月","三月","四月","五月","六月"]
#绘制柱状图
plt.barh(x,score1,bar_width,hatch="/",color="g",alpha=0.5,label="八年级一班")
plt.barh(x+bar_width,score2,bar_width,color="r",hatch="/",alpha=0.5,label="八年级二班")
#绘制月份标注位
plt.yticks(x+bar_width/2,month)
#设置坐标
plt.ylabel("月份")
plt.xlabel("语文考试平均分")
#显示标签
plt.legend()
plt.show()

结果如下图:

python数据可视化之matplotlib实践 基础篇(2)_第3张图片

让我们祝福伍老师所带的班与隔壁班的成绩都能得到提升。同时,大家会发现掌握了多数据并列柱状图后,做这道多数据平行条形图的题目并不算太难,对不对?

4、堆积图

堆积柱状图

如果在第二个bar()函数中的参数bottom的取值设定为列表在下面的数据列表,那么就会输出堆积柱状图。

多数据水平条形图里的例子,来展示一下:

代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
#以下操作可以使图像里显现出中文
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

#设置数据
x=np.arange(5)
bar_width=0.35
score1=[89,85,91,84,90]
score2=[79,76,83,80,81]
month=["二月","三月","四月","五月","六月"]
#绘制柱状图
plt.bar(x,score1,bar_width,hatch="/",color="g",alpha=0.5,tick_label=month,label="八年级一班")
#在此bar函数中加入bottom参数,形成堆积图
plt.bar(x,score2,bar_width,color="r",bottom=score1,hatch="/",alpha=0.5,label="八年级二班")
#设置坐标
plt.xlabel("月份")
plt.ylabel("语文考试平均分")
#显示标签
plt.legend()
plt.show()

结果如下图:

python数据可视化之matplotlib实践 基础篇(2)_第4张图片

 堆积条形图

与堆积柱状图类似,只不过参数的名称不叫bottom,而叫left。这里就不做过多的描述了,感兴趣的可以用刚刚的例子自己敲一下,感受一下。

二、圆类

1、饼状图pie()

调用函数:

plt.pie(x,explode=explode,labels=labels,colors=colors,shadow=True,autopct="%3.1f%%",startangle=45)

参数含义:

x:饼片代表的百分比(列表)

explode:饼片边缘偏离半径百分比(元组)

labels:标记文本内容

shadow:是否给饼绘制阴影

colors:饼片的颜色(列表)

autopct:百分比样式

startangle:以x轴为起点,第一片饼逆时针旋转角度

直接上例子

案例:伍老师的副业是某奶茶店的老板,已知这个季度赚取的利润如下图,请绘制饼状图,显示这个季度的每个月赚取利润情况。

代码:

import matplotlib.pyplot as plt
import matplotlib as mpl
#以下操作可以使图像里显现出中文
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

#设置数据
labels="10月","11月","12月"
colors=["#377eb8","#4daf4a","#ff7f00"]
pct=[1.5/5.1,1.7/5.1,1.9/5.1]
explode=(0.1,0.1,0.1)
plt.pie(pct,explode=explode,labels=labels,colors=colors,shadow=True,startangle=15,autopct="%3.1f%%")
plt.title("伍老师的奶茶第四季度利润饼图")
plt.show()

结果:

python数据可视化之matplotlib实践 基础篇(2)_第5张图片

 如果想要非分裂式的,或者只分类一块,只需要调整explode就行了

比如说调整为 explode=(0,0.1,0)结果如下图

python数据可视化之matplotlib实践 基础篇(2)_第6张图片

2、嵌套饼图

饼图不仅可以用来描述数据的比例分布,还可以将多个饼图进行嵌套,实现更直观的可视化效果。请看以下例子:

案例:已知刘奕然同学昨天与今天完成的事情耗时如下,请嵌套饼状图,让我们看看刘奕然同学花时间的比重。(请忽略未成年人工作日每天只能打一个小时王者这个事实)

代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
#以下操作可以使图像里显现出中文
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

#设置数据
element=["睡觉","吃饭","学习","打王者","逛超市"]

weight1=[8/24,3/24,8/24,3/24,2/24]
weight2=[10/24,4/24,5/24,5/24,0]

colors=["#e41a1c","#377eb8","#4daf4a","#ff7f00","#984ea3"]
wedges1,texts1,autotexts1=plt.pie(weight1,autopct="%3.1f%%",radius=1,pctdistance=0.85,
                                  colors=colors,textprops=dict(color="w"),wedgeprops=dict(width=0.3,edgecolor="w"))
wedges2,texts2,autotexts2=plt.pie(weight2,autopct="%3.1f%%",radius=0.7,pctdistance=0.75,
                                  colors=colors,textprops=dict(color="w"),wedgeprops=dict(width=0.3,edgecolor="w"))
plt.legend(wedges1,element,fontsize=12,title="完成的事情")
plt.setp(autotexts1,size=15)
plt.setp(autotexts2,size=15)
plt.setp(texts1,size=12)
plt.setp(texts2,size=12)
plt.title("刘奕然的昨天与今天")
plt.show()

结果:

python数据可视化之matplotlib实践 基础篇(2)_第7张图片

        学习到这里,小编依依不舍的要与大家说再见了,相信本次的学习能让大家有所收获,如果您感觉这篇文章对您有帮助,能给小编一个点赞加关注吗,感谢!

python数据可视化之matplotlib实践 基础篇(2)_第8张图片

你可能感兴趣的:(其他,matplotlib)