python折线图百分⽐_Python数据可视化之Matplotlib实现各种
图表
数据分析就是将数据以各种图表的形式展现给领导,供领导做决策⽤,因此熟练掌握饼图、柱状图、线图等图表制作是⼀个数据分析师必备的技能。Python有两个⽐较出⾊的图表制作框架,分别是Matplotlib和Pyechart。本⽂主要讲述使⽤Matplotlib制作各种数据图表。
学习Python中有不明⽩推荐加⼊交流
号:960410445
⾥有志同道合的⼩伙伴,互帮互助,
⾥有不错的视频学习教程和PDF!
Matplotlib是最流⾏的⽤于绘制2D数据图表的Python库,能够在各种平台上使⽤,可以绘制散点图、柱状图、饼图等。
1、柱状图
是⼀种以长⽅形或长⽅体的⾼度为变量的表达图形的统计报告图,由⼀系列⾼度不等的纵向条纹表⽰数据分布的情况,⽤来⽐较两个或以上的价值(不同时间或者不同条件),只有⼀个变量,通常利⽤于较⼩的数据集分析。柱状图可以⽤来⽐较数据之间的多少,可以⽤来观察某⼀事件的变化趋势,柱状图亦可横向排列,或⽤多维⽅式表达。
实现代码:
# 导⼊绘图模块import matplotlib.pyplot as plt# 构建数据sales = [7125,12753,13143,8635]# 中⽂乱码的处理,rcParams也可以⽤于设置图的分辨率,⼤⼩等信息Params['font.sans-serif'] =['SimHei']Params['axes.unicode_minus'] = False# 绘图,第⼀个参数是x轴的数据,第⼆个参数是y轴的数据,第三个参数是柱⼦的⼤⼩,默认值是1(值在0到1之间),color是柱⼦的颜⾊,alpha是柱⼦的透明度plt.bar(range(4), sales, 0.4,color='r', alpha = 0.8)# 添加轴标签plt.ylabel('销量')# 添加标题plt.title('⽔果2018年度销量')#添加刻度标签icks(range(4),['苹果','⾹蕉','梨','猕猴桃'])# 设置Y轴的刻度范围plt.ylim([5000,15000])# 为每个条形图添加数值标签for x,y in enumerate(sales): (x,y+100,'%s' %y,ha='center')# 显⽰图形plt.show()
效果图:
image
只需绘制柱状图的函数bar()改成barh()就可以将柱状图长⽅形或长⽅体从垂直⽅向变为⽔平⽅向。
实现代码:
# 导⼊绘图模块import matplotlib.pyplot as plt# 构建数据sales = [7125,12753,13143,8635]# 中⽂乱码的处理
plt.barh(range(4), sales, 0.4,color='r', alpha = 0.8)# 添加轴标签plt.ylabel('销量')# 添加标题plt.title('⽔果2018年度销量')# 添加刻度标签icks(range(4),['苹果','⾹蕉','梨','猕猴桃'])# 设置Y轴的刻度范围plt.xlim([5000,15000])# 为每个条形图添加数值标签for x,y in enumerate(sales): (y+0.2,x,'%s' %y,va='center')# 显⽰图形plt.show()
效果图:
image
除了bar()函数变成barh()之外。还有其他⼏个地⽅要做修改,在给每个条形图添加数值标签时,将ha='center'改为va='center',将添加x 轴标签的⽅法从xlabel改为ylabel。
柱状图和折线图混合使⽤
柱状图可以和折线图混合使⽤,⽤来表⽰某⼀个数据的变化趋势,下⾯是例⼦的柱状图表⽰⽔果的年度销量,折线图表⽰⽔果1⽉份的销量。
代码:
# 导⼊绘图模块import matplotlib.pyplot as pltjan_sales = [3010,4029,5021,3056]# 构建数据sales =
[7125,12753,13143,8635]# 中⽂乱码的处理Params['font.sans-serif'] =['SimHei']Params['axes.unicode_minus'] = Falsex = ['苹果','⾹蕉','梨','猕猴桃']plt.plot(x,jan_sales,'r')# 折线 1 x 2 y 3 colorplt.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年度销量')# 添加刻度标签icks(range(4),['苹果','⾹蕉','梨','猕猴桃'])# 设置Y轴的刻度范围plt.ylim([2000,15000])# 为每个条形图添加数值标签for x,y in enumerate(sales): (x,y+100,'%s' %y,ha='center')# 显⽰图形plt.show()
效果图:
image
2、折线图
折线图主要⽤于表⽰数据变化的趋势。折线图是直线将不同的点连接起来。
# 导⼊绘图模块import matplotlib.pyplot as plt#构建数据jan_sales = [3010,4029,5021,3056]# 中⽂乱码的处理
plt.title('⽔果2018年度1⽉份销量图')plt.ylim([2000,15000])# 为每个点添加数值标签for x,y in enumerate(jan_sales):
<(x,y+100,'%s' %y,ha='center')# 显⽰图形plt.show()
效果图:
image
折线图通过调⽤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'] # ⾃定义颜⾊# 中⽂乱码和坐标轴负号的处理
autopct='%.1f%%', # 设置百分⽐的格式,这⾥保留⼀位⼩数 pctdistance=0.8,# 设置百分⽐标签与圆⼼的距离 labeldistance = 1.15, # 设置销量⽔平标签与圆⼼的距离 startangle = 180, # 设置饼图的初始⾓度 radius = 1.5, # 设置饼图的半径 counterclock = False, #是否逆时针,这⾥设置为顺时针⽅向 wed
geprops = {'linewidth': 1.5, 'edgecolor':'green'},# 设置饼图内外边界的属性值 textprops = {'fontsize':12, 'color':'k'}, # 设置⽂本标签的属性值 center = (1.8,1.8), # 设置饼图的原点 frame = 1)# 是否显⽰饼图的图框,这⾥设置显⽰# 删除x轴和y轴的刻度icks(())icks(())# 添加图标题plt.title('2018年⽔果销量分析')# 显⽰图形plt.show()
效果图:
image
matplotlib中subplot
简单介绍下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 npimport matplotlib.pyplot as plt# 数据个数n = 50# 均值为0, ⽅差为1的随机数x = al(0, 1, n)y = al(0, 1, n)# 计算颜⾊值color = np.arctan2(y, x)# 绘制散点图plt.scatter(x, y, s = 75, c = color, alpha = 0.5)#设置坐标轴范围plt.xlim((-1.5, 1.5))plt.ylim((-1.5, 1.5))# 不显⽰坐标轴的值icks(([-1,0,1,2,3,4]))icks(([-
1,0,1,2,3,4]))plt.show()
效果图:
image
5、箱线图
箱线图⼀般⽤来展现数据⼤⼩、占⽐、趋势等等的呈现,其包含⼀些统计学的均值、分位数、极值等
等统计量,因此,该图信息量较⼤,不仅能够分析不同类别数据平均⽔平差异(需在箱线图中加⼊均值点),还能揭⽰数据间离散程度、异常值、分布差异等等。
使⽤boxplot()⽅法绘制。
import numpy as npimport matplotlib.pyplot as pltimport pandas as pdnp.random.seed(2) #设置随机种⼦df =
pd.DataFrame(np.random.rand(5,4),columns=['A', 'B', 'C', 'D'])#先⽣成0-1之间的5*4维度数据,再装⼊4列DataFrame中
df.boxplot() #也可⽤plot.box()plt.show()
效果图:
image
6、雷达图
雷达图可以⽤来显⽰⼀个周期数值的变化,也可以⽤来展⽰对个对象/维度之间的关系
import numpy as npimport matplotlib.pyplot as plt#标签labels = np.array(['语⽂','数学','英语','⽣物','物理','化学'])#数据个数dataLenth = 6#数据data = np.array([7,4,3,6,4,8])angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)data =
fig.add_subplot(111, polar=True)# polar参数!!ax.plot(angles, data, 'bo-', linewidth=2)# 画线ax.fill(angles, data,
facecolor='r', alpha=0.25)# 填充ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei")ax.set_title("matplotlib 雷达图", va='bottom', fontproperties="SimHei")ax.set_rlim(0,id(True)plt.show()
效果图:
image
7、⽓泡图
⽓泡图⽤于判断3个变量之间是否存在某种关系。它跟散点图有点类似,只不过⽓泡图以⽓泡⼤⼩作为新的维度
import pandas as pdimport matplotlib.pyplot as pltimport pandas as pdd = {"时
间":pd.Series([2006,2007,2008,2009,2010]), "数量":pd.Series([10,200,120,150,300]), "⼤
⼩":pd.Series([50,130,40,50,160]), "分类":pd.Series([1,2,0,1,2]), "判
断":pd.Series([True,True,True,True,True])}df=pd.DataFrame(d)#先定义⽓泡⼤⼩,rank 函数将⼤⼩列进⾏⼤⼩分配,越⼤的值分配结果也越⾼#n 为倍数,⽤来调节⽓泡的⼤⼩,且看后头size=df['⼤⼩'].rank()n=20#定义⼀个字典,将颜⾊跟对应的分类进⾏绑定color= {0:'red',1:'blue',2:'orange'}#增加color的参数,⽤列表解析式将data分类中的每个数据的数字映射到前⾯color的颜⾊中plt.scatter(df['数量'],df['⼤⼩'],color=[color[i] for i in df['分类']],s=size*n,alpha=0.6)plt.show()
效果图:
image
⽓泡图⽤也是scatter⽅法绘制,和散点图⼀样。差别在于点的⼤⼩不⼀样,散点图的点都是⼀样的,⽽⽓泡图点的⼤⼩不⼀样。
以上就是柱状图、散点图、⽓泡图、折线图的实现⽅式。希望给⼤伙带来帮助。

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