Python数据可视化教程之Matplotlib实现各种图表实例
前⾔
数据分析就是将数据以各种图表的形式展现给领导,供领导做决策⽤,因此熟练掌握饼图、柱状图、线图等图表制作是⼀个数据
分析师必备的技能。Python有两个⽐较出⾊的图表制作框架,分别是Matplotlib和Pyechart。本⽂主要讲述使⽤Matplotlib制作各种数据图表。
Matplotlib是最流⾏的⽤于绘制2D数据图表的Python库,能够在各种平台上使⽤,可以绘制散点图、柱状图、饼图等。
1、柱状图
是⼀种以长⽅形或长⽅体的⾼度为变量的表达图形的统计报告图,由⼀系列⾼度不等的纵向条纹表⽰数据分布的情况,⽤来⽐较
两个或以上的价值(不同时间或者不同条件),只有⼀个变量,通常利⽤于较⼩的数据集分析。柱状图可以⽤来⽐较数据之间的
多少,可以⽤来观察某⼀事件的变化趋势,柱状图亦可横向排列,或⽤多维⽅式表达。
实现代码:
# 导⼊绘图模块
import matplotlib.pyplot as plt
# 构建数据
sales = [7125,12753,13143,8635]
# 中⽂乱码的处理,rcParams也可以⽤于设置图的分辨率,⼤⼩等信息
# 绘图,第⼀个参数是x轴的数据,第⼆个参数是y轴的数据,第三个参数是柱⼦的⼤⼩,默认值是1(值在0到1之间),color是柱⼦的颜⾊,alpha是柱⼦的透明度plt.bar(range(4), sales, 0.4,color='r', alpha = 0.8)
# 添加轴标签
plt.ylabel('销量')
# 添加标题
plt.title('⽔果2018年度销量')
# 添加刻度标签
# 设置Y轴的刻度范围
plt.ylim([5000,15000])
# 为每个条形图添加数值标签
for x,y in enumerate(sales):
<(x,y+100,'%s' %y,ha='center')
# 显⽰图形
plt.show()
效果图:
只需绘制柱状图的函数bar()改成barh()就可以将柱状图长⽅形或长⽅体从垂直⽅向变为⽔平⽅向。
实现代码:
# 导⼊绘图模块
import matplotlib.pyplot as plt
# 构建数据
sales = [7125,12753,13143,8635]
# 中⽂乱码的处理
x = ['苹果','⾹蕉','梨','猕猴桃']
# 绘图
plt.barh(range(4), sales, 0.4,color='r', alpha = 0.8)
# 添加轴标签
plt.ylabel('销量')
# 添加标题
plt.title('⽔果2018年度销量')
# 添加刻度标签
# 设置Y轴的刻度范围matplotlib中subplot
plt.xlim([5000,15000])
# 为每个条形图添加数值标签
for x,y in enumerate(sales):
<(y+0.2,x,'%s' %y,va='center')
# 显⽰图形
plt.show()
效果图:
除了bar()函数变成barh()之外。还有其他⼏个地⽅要做修改,在给每个条形图添加数值标签时,将ha='center'改为va='center',将添加x轴标签的⽅法从xlabel改为ylabel。
柱状图和折线图混合使⽤
柱状图可以和折线图混合使⽤,⽤来表⽰某⼀个数据的变化趋势,下⾯是例⼦的柱状图表⽰⽔果的年度销量,折线图表⽰⽔果1⽉份的销量。
代码:
# 导⼊绘图模块
import matplotlib.pyplot as plt
jan_sales = [3010,4029,5021,3056]
# 构建数据
sales = [7125,12753,13143,8635]
# 中⽂乱码的处理
x = ['苹果','⾹蕉','梨','猕猴桃']
plt.plot(x,jan_sales,'r')# 折线 1 x 2 y 3 color
plt.plot(x,jan_sales,'g',lw=5)# 4 line w
# 绘图
plt.bar(range(4), sales, 0.4,color='b', alpha = 0.8)
# 添加轴标签
plt.ylabel('销量')
# 添加标题
plt.title('⽔果2018年度销量')
# 添加刻度标签
# 设置Y轴的刻度范围
plt.ylim([2000,15000])
# 为每个条形图添加数值标签
for x,y in enumerate(sales):
<(x,y+100,'%s' %y,ha='center')
# 显⽰图形
plt.show()
效果图:
2、折线图
折线图主要⽤于表⽰数据变化的趋势。折线图是直线将不同的点连接起来。# 导⼊绘图模块
import matplotlib.pyplot as plt
#构建数据
jan_sales = [3010,4029,5021,3056]
# 中⽂乱码的处理
x = ['苹果','⾹蕉','梨','猕猴桃']
#第⼀个参数是x轴,第⼆参数时y轴数据,第三个参数是线的颜⾊,第⼆个参数是线条的粗细plt.plot(x,jan_sales,'r',lw=5)# 4 line w
# 添加标题
plt.title('⽔果2018年度1⽉份销量图')
plt.ylim([2000,15000])
# 为每个点添加数值标签
for x,y in enumerate(jan_sales):
<(x,y+100,'%s' %y,ha='center')
# 显⽰图形
plt.show()
效果图:
折线图通过调⽤plot()⽅法绘制。
3、饼图
饼图主要是⽤来表⽰数据的占⽐,给⼈⼀眼就可以看出数据的占⽐⼤⼩。饼图使⽤pie()函数绘制。import matplotlib.pyplot as plt
# 设置绘图的主题风格(不妨使⽤R中的ggplot分隔)
plt.style.use('ggplot')
# 构造数据
edu = [0.2515,0.3724,0.3336,0.0368,0.0057]
labels = ['苹果','⾹蕉','梨','猕猴桃','桔⼦']
explode = [0,0.1,0,0,0] # ⽤于突出显⽰⼤专学历⼈
colors=['#FEB748','#EDD25D','#FE4F54','#51B4FF','#dd5555'] # ⾃定义颜⾊
# 中⽂乱码和坐标轴负号的处理
# 将横、纵坐标轴标准化处理,保证饼图是⼀个正圆,否则为椭圆
plt.axes(aspect='equal')
# 控制x轴和y轴的范围
plt.xlim(0,4)
plt.ylim(0,4)
# 绘制饼图
plt.pie(x = edu,# 绘图数据
explode=explode, # 突出显⽰⾹蕉⼈
labels=labels, # 添加⽔果销量⽔平标签
colors=colors, # 设置饼图的⾃定义填充⾊
autopct='%.1f%%', # 设置百分⽐的格式,这⾥保留⼀位⼩数
pctdistance=0.8,# 设置百分⽐标签与圆⼼的距离
labeldistance = 1.15, # 设置销量⽔平标签与圆⼼的距离
startangle = 180, # 设置饼图的初始⾓度
radius = 1.5, # 设置饼图的半径
counterclock = False, # 是否逆时针,这⾥设置为顺时针⽅向
wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'},# 设置饼图内外边界的属性值
textprops = {'fontsize':12, 'color':'k'}, # 设置⽂本标签的属性值
center = (1.8,1.8), # 设置饼图的原点
frame = 1)# 是否显⽰饼图的图框,这⾥设置显⽰
# 删除x轴和y轴的刻度
# 添加图标题
plt.title('2018年⽔果销量分析')
# 显⽰图形
plt.show()
效果图:
简单介绍下pie函数参数:
x: 指定绘图的数据
explode:指定饼图某些部分的突出显⽰,即呈现爆炸式
labels:为饼图添加标签说明,类似于图例说明
colors:指定饼图的填充⾊
autopct:设置百分⽐格式,如'%.1f%%'为保留⼀位⼩数
shadow:是否添加饼图的阴影效果
pctdistance:设置百分⽐标签与圆⼼的距离
labeldistance:设置各扇形标签(图例)与圆⼼的距离;
startangle:设置饼图的初始摆放⾓度, 180为⽔平;
radius:设置饼图的半径⼤⼩;
counterclock:是否让饼图按逆时针顺序呈现, True / False;
wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜⾊等, 如wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'} textprops:设置饼图中⽂本的属性,如字体⼤⼩、颜⾊等;
center:指定饼图的中⼼点位置,默认为原点
frame:是否要显⽰饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中⼼位置;
4、散点图
散点图主要的作⽤是判断两个变量之间关系的强弱或者是否存在关系。
散点图由scatter()⽅法绘制。
import numpy as np
import matplotlib.pyplot as plt

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。