Python数据可视化绘图工具matplotlib浅试
数据可视化
matplotlib模块的使用
1、柱形图
1、应用场景:
定性数据的分布展示
说明:
柱状图主要是应用在可视化数据的应用场景中
例如:一个班级中学生的籍贯分布,下载一款app操作分布
2、绘图原理
bar函数的使用
参数的说明:
注意:
不使用默认的‘Unicode minues’模块来处理坐标轴轴线的刻度是负数的情况
一般使用“ASCII hypen”模块来处理坐标轴轴线的负刻度值的情况
ba()r函数
参数:
#x:柱状图中的柱体标签值
#y:柱状图中柱体高度
#align:柱体对齐方式
#color:柱体颜色
#tick_label:刻度标签值
示例
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif'] = ['SimHei'] #完成字体的配置
mpl.rcParams['axes.unicode_minus'] = False #实现模式选择
x = [1,2,3,4,5]
y=[5,6,4,3,12]
plt.bar(x,y,align='center',color = 'red',tick_label = ['A','B','C','D','E'],alpha = 0.6)
plt.xlabel('测试难度')
plt.ylabel('试卷分数')
plt.grid(True,axis = 'y',ls = ':',color = 'r',alpha = 0.3)
plt.show()
#x:柱状图中的柱体标签值
#y:柱状图中柱体高度
#align:柱体对齐方式
#color:柱体颜色
#tick_label:刻度标签值
运行:(存的截图把试卷难度截没了)

2、条形图
将柱形图的柱体由垂直变为水平方向
barh()函数
3、堆积图
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif'] = ['SimHei'] #完成字体的配置
mpl.rcParams['axes.unicode_minus'] = False #实现模式选择
x = [1,2,3,4,5]
y=[5,6,4,3,12]
y1 = [2,6,3,8,5]
plt.bar(x,y,align='center',color = 'red',tick_label = ['A','B','C','D','E'],label= '班级A')
plt.bar(x,y1,align='center',bottom=y,color='y',label = '班级B' )
plt.xlabel('测试难度')
plt.ylabel('试卷分数')
#plt.grid(True,axis = 'y',ls = ':',color = 'r',alpha = 0.3)
plt.legend()
plt.show()
#小改动
plt.barh(x,y,align='center',color = 'red',tick_label = ['A','B','C','D','E'],label= '班级A') plt.barh(x,y1,align='center',left=y,color='y',label = '班级B' ) plt.ylabel('测试难度') plt.xlabel('试卷分数')
4、分块图
分类
多数据并列柱状图和多数据平行条状图
示例
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams['font.sans-serif'] = ['SimHei'] #完成字体的配置
mpl.rcParams['axes.unicode_minus'] = False #实现模式选择
x = np.arange(5)
y=[6,10,4,5,1]
y1 = [2,6,3,8,5]
bar_width = 0.35
tick_label = ['A','B','C','D','E']
plt.bar(x,y,bar_width,color = 'red',align='center',label= '班级A',alpha = 0.5)
plt.bar(x+bar_width,y1,bar_width,color='y',align='center',label = '班级B' ,alpha = 0.5)
plt.ylabel('测试难度')
plt.xlabel('试卷分数')
plt.xticks(x+bar_width/2,tick_label)
plt.legend()
plt.show()

5、扩展:参数的探索
问题,如何在在柱体图上绘制装饰或装饰图,如何去设置柱体的填充样式
可以使用关键字hatch的取值 “/”,‘\\’,“|”,“-”
说明:符号字符串的符号数量越多,柱体的集合图形密集程度越高。
6、饼图
作用:饼图是用来朱暂时定性数据比例分布特征的统计图形
应用场景:定性数据的比例展示或者离散数据的比例展示
绘制原理:
pie()
import matplotlib as mpl import matplotlib.pyplot as plt mpl.rcParams['font.sans-serif'] = ['SimHei'] #完成字体的配置 mpl.rcParams['axes.unicode_minus'] = False #实现模式选择 labels = 'A难度','B难度','C难度','D难度' students = [0.35,0.15,0.20,0.30] colors = ['#377eb8','#4daf4a','#984ea3','#ff7f00'] explode = (0.1,0.1,0.1,0.1) plt.pie(students,explode=explode,labels=labels,colors=colors,autopct='%3.1f%%',startangle=45,shadow=True) plt.title('选择不同难度测试试卷的学生占比') plt.show() #students :饼片代表百分比 #explode :饼片边缘偏离半径百分比 #labels : 标记每一片饼片文本标签内容 #autopct :饼片标签内容对应数值百分比样式 #startangle :从x轴为起始位置,第一个饼片逆时针旋转的角度 #shadow :是否绘制饼片的阴影 #color :饼片的颜色
说明:labels:分布存储四份不同难度的试卷
students: 存储选择每套试卷的学生百分比
explode:存储每份饼片边缘偏离相邻饼片边缘的半径长度比例值
autopct:规定百分比保留一位数字
startangle:
shadow:觉得是否有阴影
color:饼色

非分裂式饼图
~~~~
7、内嵌环形饼图 :找到了这一版本,并试运行
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif'] = ['SimHei'] #完成字体的配置
mpl.rcParams['axes.unicode_minus'] = False #实现模式选择
elements = ['面粉','砂糖','奶油','草莓酱','坚果']
weight1 = [40,15,21,10,15]
weight2 = [30,25,20,15,10]
colormaplist = ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00"]
outer_colors = colormaplist
infor_colors = colormaplist
wedges1,texts1,autotexts1 = plt.pie(weight1,
autopct = '%3.1f%%',
radius = 1,
pctdistance=0.85,
colors=outer_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=outer_colors,
textprops=dict(color = 'w'))
wedgeprops = dict(width=0.3,edgecolor = 'w')
plt.legend(wedges1,
elements,
fontsize=12,
title="配料图",
loc="center left",
bbox_to_anchor=(0.91, 0, 0.3, 1)
) #
plt.setp(autotexts1,size = 15,weight = 'bold')
plt.setp(autotexts2,size = 15,weight = 'bold')
plt.setp(texts1,size = 12)
plt.title("不同果酱面包配料比例表的比较")
plt.show()


浙公网安备 33010602011771号