Python数据可视化

绘制条形图或堆积条形图

使用barh()绘制条形图或堆积条形图

barh()函数的语法格式如下所示:

barh(y,width,height=0.8,left=None,align='center',*,**kwargs)

该函数常用的参数的含义如下

y:表示条形的y坐标值。

width:表示条形的宽度,默认值为0.8.

height:表示条形的高度。

left:条形左侧的x轴坐标,默认值为0。

align:表示条形的对齐方式,有'center'和'edge'俩个取值,其中’center'表示将条形与刻度对齐;'edge'表示将条形的底边与刻度线对齐。

barh()函数会返回一个BarContainer类的对象

例如,使用barh()函数绘制条形图,代码如下。

import numpy as np               
import matplotlib.pyplot as plt  #导入模块
y=np.arange(5)
x1=np.array([10,8,7,11,13])      #准备数据
bar_height = 0.3                 #条形的高度
fig=plt.figure()                 #创建代表画布的Figure类的对象fig
ax=fig.add_subplot()             #在画布上添加坐标系风格的绘画区域ax
ax.barh(y,x1,tick_label=['a','b','c','d','e'],height=bar_height)   #绘制图表
plt.show()                       #展示图表

使用pyplot的barh()函数还可以绘制具有多组条形的条形图。例如,使用barh()函数绘制具有俩组条形的条形图,代码如下:

import numpy as np               
import matplotlib.pyplot as plt  #导入模块
y=np.arange(5)
x1=np.array([10,8,7,11,13])
x2=np.array([9,6,5,10,12])#准备数据
bar_height = 0.3                 #条形的高度
fig=plt.figure()                 #创建代表画布的Figure类的对象fig
ax=fig.add_subplot()             #在画布上添加坐标系风格的绘画区域ax
ax.barh(y,x1,tick_label=['a','b','c','d','e'],height=bar_height)
ax.barh(y+bar_height,x2,height=bar_height)  #绘制图表
plt.show()                       #展示图表

使用pyplot的barh()函数绘制图表时,可以通过给left参数传值的方式控制条形图的x值,使后绘制的条形位于先绘制的条形的右方。例如,使用barh()函数绘制由俩组条形堆叠而成的堆积条形图,代码如下:

import numpy as np               
import matplotlib.pyplot as plt  #导入模块
y=np.arange(5)
x1=np.array([10,8,7,11,13])
x2=np.array([9,6,5,10,12])       #准备数据
bar_height = 0.3                 #条形的高度
fig=plt.figure()                 #创建代表画布的Figure类的对象fig
ax=fig.add_subplot()             #在画布上添加坐标系风格的绘画区域ax
ax.barh(y,x1,tick_label=['a','b','c','d','e'],height=bar_height)
ax.barh(y,x2,left=x1,height=bar_height)  #绘制图表
plt.show()                       #展示图表

另外,我们在使用pyplot的barh()函数绘制图表时,可以通过给xerr,yerr参数传值的方式为条形添加误差棒,示例代码如下。

import numpy as np               
import matplotlib.pyplot as plt  #导入模块
y=np.arange(5)
x1=np.array([10,8,7,11,13])
x2=np.array([9,6,5,10,12])       #准备数据
bar_height = 0.3                 #条形的高度
error = [2,1,2.5,2,1.5]
fig=plt.figure()                 #创建代表画布的Figure类的对象fig
ax=fig.add_subplot()             #在画布上添加坐标系风格的绘画区域ax
ax.barh(y,x1,tick_label=['a','b','c','d','e'],height=bar_height)
ax.barh(y,x2,left=x1,height=bar_height,xerr=error)  #绘制图表
plt.show()                       #展示图表

绘制堆积面积图

使用stackplot()绘制堆积面积图

使用pyplot的stackploth()函数可以快速地绘制堆积面积图,stackplot()函数语法格式如下所示:

stackplot(x,y,labels=(),baseline()='zero',data=None,*args,**kwargs)

该函数常用参数的含义如下。

x:表示x轴的数据,可以是一维数组。

y:表示y轴的数据,可以是二维数组或一维数组序列。

labels:表示每组折线及填充区域的标签。

baseline :表示计算基线的方法,包括'zero'、'sym'、 'wiggle' 和'weighted_wiggle'。其中,

'zero'表示恒定零基线,即简单的堆积图; 'sym'表示对称于零基线; 'wiggle'表示最小化平方斜率的总和; 'weighted wiggle' 表示执行相同的操作,但权重用于说明每层的大小。

例如,用stackplot()函数绘制由3条折线及下方填充区域堆叠的堆积面积图,代码如下。

import numpy as np
import matplotlib.pyplot as plt    #导入模块
x=np.arange(6)
y1=np.array([1,4,3,5,6,7])
y2=np.array([1,3,4,2,7,6])
y3=np.array([3,4,3,6,5,5])       #准备数据
fig=plt.figure()                 #创建代表画布的Figure类的对象fig
ax=fig.add_subplot()             #在画布上添加坐标系风格的绘画区域ax
ax.stackplot(x,y1,y2,y3)         #绘制图表
plt.show()                       #展示图表

绘制直方图

使用hist()绘制直方图

使用pyplot的hist()函数可以快速绘制直方图,hist()函数的语法格式如下所示:
 

hist (X, bins=None, range=None, density=None, weights=None,

cumulative=False, bottom-None, histtype='bar', align='mid' ,

orientation= 'vertical', rwidth-None, log-False, label=None,

stacked-False, normed None, * , data-None, ** kwargs)

该函数常用参数的含义如下。

x:表示x轴的数据,可以为单个数组成多个数组的序列。

bins:表示矩形条的个数,默认为10。

range: 表示数据的范围。若没有提供range参数的值,则数据范围为(x.min(),x.max())。

cumulative :表示是否计算累计频数或频率。

bistype:表示直方图的类型,支持"bar'、 'astacked'、'step'、'stepfilled' 四种取值,其中'bar'为默认值,代表传统的直方图; 'barstacked'代表唯积直方图; 'step'代表朱填充的线条直方图; 'stepfilled'代表填充的线条直方图。

align: 表示矩形条边界的对齐方式,可设置为'left'、 'mid'或'right', 默认为'mid'。

orientation :表示矩形条的摆放方式,默认为'vertical', 即垂直方向。

rwidth:表示矩形条宽度的百分比,默认为0。若histtype的值为'step'或'tepilled',则直接忽略rwidth参数的值。

stacked:表示是否将多个矩形条以堆积形式摆放。

例如,绘制一个具有 8个矩形条填充的线条直方图,代码如下。

import numpy as np
import matplotlib.pyplot as plt    #导入模块
scores = np.random.randint(0,100,50) #准备50个随机测试数据
fig=plt.figure()                 #创建代表画布的Figure类的对象fig
ax=fig.add_subplot()             #在画布上添加坐标系风格的绘画区域ax
ax.hist(scores,bins=8,histtype='stepfilled')       #绘制图表
plt.show()                       #展示图表

下面使用一组10000个随机数作为人脸识别的灰度值,使用hist()函数绘制一个灰度直方图,具体代码如下。

import numpy as np
import matplotlib.pyplot as plt    #导入模块
random_state = np.random.RandomState(19680801)
random_x = random_state.randn(10000) #10000个随机数
fig=plt.figure()                 #创建代表画布的Figure类的对象fig
ax=fig.add_subplot()             #在画布上添加坐标系风格的绘画区域ax
ax.hist(random_x,bins=25)        #绘制图表
plt.show()                       #展示图表

绘制饼图或圆环图

使用pie()绘制饼图或圆环图

使用pyplot的pie()函数可以快速地绘制饼图或圆环图,pie()函数的语法格式如下所示:

pie(x, explode=None, labels=None, autopct=None,

pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,

radius-None, counterclock=True, wedgeprops=None, textprops=None,

center=(0, 0), frame=False, rotatelabels=False, *, data=None)

该函数常用参数的含义如下。

x:表示扇形或楔形的数据。

explode: 表示扇形或楔形离开圆心的距离。

labels: 表示扇形或楔形对应的标签文本。

autopct :表示控制扇形成根形的数值显示的字符事,可通过格式字符串指定小数点后的位数。

pcdisance:表示扇形或楔形对应的数值标签距离圆心的比例,默认为0.6。

shadow:表示是否显示阴影。

labeldistance :表示标签文 本的绘制位置(相对于 半径的比例), 默认为1.1。

startangle:表示起始绘制角度,默认从x轴的正方向逆时针绘制。

radius: 表示扇形或楔形的半径

wedgeprops :表示控制扇形或楔形属性的字典。例如,通过wedgeprops = {'width': 0.7}将楔形的宽度设为0.7。

textprops :表示控制图表中文本属性的字典。

center:表示图表的中心点位置,默认为(0,0)。

frame: 表示是否显示图框。

例如,使用pie()函数绘制一个饼图, 代码如下。

import numpy as np
import matplotlib.pyplot as plt    #导入模块
data = np.array([20,50,10,15,30,55])
pie_labels = np.array(['A','B','C','D','E','F'])  #准备数据
fig=plt.figure()                 #创建代表画布的Figure类的对象fig
ax=fig.add_subplot()             #在画布上添加坐标系风格的绘画区域ax
ax.pie(data,radius=1.5,labels=pie_labels,autopct='%3.1f%%')       
                                 #绘制饼图:半径为0.5,数值保留1位小数
plt.show()                       #展示图表

例如,使用pie()函数绘制一个圆环图,代码如下。

import numpy as np
import matplotlib.pyplot as plt    #导入模块
data = np.array([20,50,10,15,30,55])
pie_labels = np.array(['A','B','C','D','E','F'])  #准备数据
fig=plt.figure()                 #创建代表画布的Figure类的对象fig
ax=fig.add_subplot()             #在画布上添加坐标系风格的绘画区域ax
ax.pie(data,radius=1.5,wedgeprops={'width':0.7},labels=pie_labels,autopct='%3.1f%%',pctdistance=0.75)      
                                 #绘制圆环图:外圆半径为1.5,楔形宽度为0.7
plt.show()                       #展示图表

使用pie()函数绘制用户A某月支付宝消费情况的饼图,具体代码如下。

import numpy as np
import matplotlib.pyplot as plt   #导入模块
kinds=['购物','人情往来','餐饮美食','通信物流','生活日用','交通出行','休闲娱乐','其他']
money_scale=[800/3000,100/3000,1000/3000,200/3000,300/3000,200/3000,200/3000,200/3000]#准备数据
dev_position = [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]
fig=plt.figure()                 #创建代表画布的Figure类的对象fig
ax=fig.add_subplot()             #在画布上添加坐标系风格的绘画区域ax
ax.pie(money_scale,labels=kinds,autopct='%3.1f%%',shadow=True,explode=dev_position,startangle=90)      
plt.show()                       #展示图表

绘制散点图或气泡图

使用scatter()绘制散点图或气泡图

使用pyplot的scatter()函数可以快速绘制散点图或气泡图,scatter()函数的语法格式如下:

scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,
        vmin=None, vmax=None, alpha=None, linewidths=None, verts=None,
        edgecolors=None, *, plotnonfinite,=False, data=None,**kwargs)

该函数常用参数的含义如下。

x,y :表示数据点的位置。

s:表示数据点的大小。

C:表示数据点的颜色。

marker :表示数据点的样式,默认为圆形。

cmap :表示数据点的颜色映射表,仅当参数c为浮点数组时才使用。

norm :表示数据亮度,可以取值为0 ~ 1。

vmin, vmax:表示亮度的最小值和最大值。若传入了norm参数,则忽略vmin和

vmax参数。

alpha:表示透明度,可以取值为0~ 1。

linewidths:表示数据点边缘的宽度。

edgecolors: 表示数据点边缘的颜色。

使用scatter()函数绘制一个散点图,代码如下。

import numpy as np
import matplotlib.pyplot as plt       #导入模块
fig = plt.figure()                    #创建类
ax = fig.add_subplot()                #给画布fig上添加坐标系风格的绘图区域ax
num = 50                              #随机50个数
x = np.random.rand(num)
y = np.random.rand(num)
ax.scatter(x, y)                      #绘制图表
plt.show()                            #展示图表

使用scatter()函数绘制一个气泡图,代码如下:

import numpy as np
import matplotlib.pyplot as plt       #导入模块
fig = plt.figure()                    #创建类
ax = fig.add_subplot()                #给画布fig上添加坐标系风格的绘图区域ax
num = 50                              #随机50个数
x = np.random.rand(num)
y = np.random.rand(num)
area= (30 * np.random.rand(num))**2   #随机数据点大小
ax.scatter(x, y, s=area)              #绘制气泡图
plt.show()                            #展示气泡图

使用scatter()函数绘制一个散点图,代码如下:

import numpy as np
import matplotlib.pyplot as plt       #导入模块
fig = plt.figure()                    #创建类
ax = fig.add_subplot()                #给画布fig上添加坐标系风格的绘图区域ax
x_speed = np.arange(10, 210, 10)      #准备x轴和y轴的数据
y_distance = np.array([0.5, 2.0, 4.4, 7.9, 12.3,
                      17.7, 24.1, 31.5, 39.9, 49.2, 
                      59.5, 70.8, 83.1, 96.4, 110.7,
                      126.0, 142.2, 159.4, 177.6, 196.8])
ax.scatter(x_speed, y_distance, s=50, alpha=0.9)        #s表示数据点大小,alpha表示透明度
plt.show()                            #展示散点图

绘制误差棒图

使用errorbar()绘制误差图

使用pyplot的errorbar()函数可以快速绘制误差棒图,errorbar()函数的语法格式如下:

errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, 
         elinewidth=None, capsize=None, barsabove=False, lolims=False,
         uplims=False, xlolims=False, xuplims=False, errorevery=1,
         capthick=None, *, data=None, **kwargs)

该函数常用参数的含义如下。

x,y:表示数据点的位置。

xerr, yerr:表示数据的误差范围。

fmt:表数据点的标记样式和数据点之间连接线的样式。

ecolor:表示误差棒的线条颜色。

elinewidth: 表示误差棒的线条宽度)

capsize :表示误差棒边界横杆的大少。

capthick:表示误差棒边界横杆的厚度。

使用errorbar()函数绘制一个误差棒图,代码如下。

import numpy as np
import matplotlib.pyplot as plt       #导入模块
fig = plt.figure()                    #创建类
ax = fig.add_subplot()                #给画布fig上添加坐标系风格的绘图区域ax
x = np.arange(5)                      #准备数据
y = (25, 32, 34, 20, 25)
y_offset = (3, 5, 2, 3, 3)            #准备误差
ax.errorbar(x, y, yerr=y_offset, capsize=3, capthick=2)        #capsize表示误差棒边界横杆的大小,capthick表示误差棒边界横杆的厚度
plt.show()                            #展示图表

下面用柱形图和误差棒图绘制实例图,代码如下:

import matplotlib.pyplot as plt
import numpy as np
#导入模块
 
# 显示中文
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 创建画布
fig = plt.figure()
# 在画布上添加绘图区域
ax = fig.add_subplot(111)
# 准备数据
# 准备 x 轴和 y 轴的数据
x = np.arange(3)
y1 = np.array([2.04, 1.57, 1.63])
y2 = np.array([1.69, 1.61, 1.64])
y3 = np.array([4.65, 4.99, 4.94])
y4 = np.array([3.39, 2.33, 4.10])
# 指定测量偏差
error1 = [0.16, 0.08, 0.10]
error2 = [0.27, 0.14, 0.14]
error3 = [0.34, 0.32, 0.29]
error4 = [0.23, 0.23, 0.39]
bar_width = 0.2
# 调用绘图方法绘制图表
width = 0.2
ax.bar(x, y1,width=bar_width)
ax.bar(x+width, y2,align='center',tick_label=['春季','夏季','秋季'],width=bar_width)
ax.bar(x+2*width, y3,width=bar_width)
ax.bar(x+3*width, y4,width=bar_width)
# 添加误差棒
ax.errorbar(x,y1,yerr=error1,capsize=4,capthick=1,fmt='k,')
ax.errorbar(x+width,y2,yerr=error2,capsize=4,capthick=1,fmt='k,')
ax.errorbar(x+2*width,y3,yerr=error3,capsize=4,capthick=1,fmt='k,')
ax.errorbar(x+3*width,y4,yerr=error4,capsize=4,capthick=1,fmt='k,')
# 展示图表
plt.show()

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值