利用matplotlib绘制直方图、饼图、散点图以及误差棒图

 在绘制图表前,我们先来浅浅的认识一下各个图表,方便我们知道并且更好的运用各个图表,接着给数据给例子来绘制图表,让我们轻而易举的理解且接受。

直方图

直方图又称质量分布图,是一种统计报告图,由一系列高低不等的纵向矩形条或线段组成的图表,一般用横轴表示数据类型,纵轴表示分布情况,用于反应数据的分布和波动情况。

现在,我们先来绘制一个条形填充的线条直方图

首先导入matplotlib.pyplot和numpy模块,分别将这两个模块重命名为plt和np

#导入模块
import matplotlib.pyplot as plt
import numpy as np

测试数据

#准备50个随机测试数据
scores = np.random.randint(0,100,50)

使用  hist()  函数绘制直方图

#创建代表画布的Figure类的对象fig
fig = plt.figure()
#在画布fig上添加坐标系风格的绘图区域ax
ax = fig.add_subplot(111)

#scores表示x轴的数据
#bins表示矩形条的个数
#histtype表示直方图的类型,支持 “bar”默认值,表示传统的直方图,“barstacked”表示堆积直方图,“step”表示未填充的线条直方图,“stepfilled”表示填充的线条直方图 四种取值

#绘制直方图
ax.hist(scores,bins=8,histtype='stepfilled')
#展示图表
plt.show()

  我们也根据自己的主观来更改图表的边框和颜色填充,具体如下

#绘制直方图
#edgecolor表示边框颜色,facecolor表示填充颜色
ax.hist(scores,bins=8,histtype='stepfilled',edgecolor='black',facecolor='purple')
plt.show()

为了我们更方便的运用,我们也可以简写代码

#绘制直方图
ax.hist(scores,bins=8,histtype='stepfilled',edgecolor='b',facecolor='c')
plt.show()

绘制多组直方图

#导入模块
import matplotlib.pyplot as plt
import numpy as np
#生成1000个随机数
random_state1 = np.random.RandomState(19680801)
random_x1 = random_state.randn(1000)
#生产2000个随机数
random_state2 = np.random.RandomState(19680806)
random_x2 = random_state.randn(2000)
#创建代表画布的Figure类的对象fig
fig = plt.figure()
#在画布fig上添加坐标系风格的绘图区域ax
ax = fig.add_subplot(111)
#绘制包含25个矩形条的两组直方图(并排)
ax.hist([random_x1,random_x2],bins=25,edgecolor='black',facecolor='brown')
#展示图表
plt.show()

饼图

 饼图是由若干个面积大小不一、以条形或颜色填充的扇形组成的圆形图表,它使用圆表示数据的总量,组成圆的每个扇形表示数据中的各项占总量的比例大小,主要用于显示数据中各项大小与各项总和的比例。

绘制饼图

#导入模块
import matplotlib.pyplot as plt
import numpy as np
#数据
data = np.array([30,60,25,20,10,25])
#外侧标签
pie_labels = np.array(['A','B','C','D','E','F'])

使用  pie()  绘制饼图

#创建对象
fig = plt.figure()
ax = fig.add_subplot(111)
#绘制饼图
#data表示数据,radius表示半径,labels表示对应的标签文本,autopct表示数值显示的字符串
ax.pie(data,radius=1.5,labels=pie_labels,autopct='%3.1f%%')
展示图表
plt.show()

圆环图(楔形)

 也可以使用  pie()  绘制圆环图

#导入模块
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.pyplot as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
#圆环图外侧的说明文字
kinds = ['购物','人情往来','餐饮美食','通信物流','生活日用','交通出行','休闲娱乐','其他']
#圆环图的数据
money_scale = [800/3000,100/3000,1000/3000,200/3000,300/3000,200/3000,200/3000,200/3000]
#绘制圆环图
#wedgeprops表示控制图形属性的字典,pctdistance表示图形对应的数值标签距离圆心的比例,默认0.6
#wedgeprops={'width':0.7}表示圆环形的宽度为0.7
fig = plt.figure()
ax = fig.add_subplot(111)
ax.pie(money_scale,labels=kinds,autopct='%3.1f%%',radius=1.5,wedgeprops={'width':0.7},pctdistance=0.75)
#展示图表
plt.show()

 图表如下:

 对该图形进行美化修改,代码如下:

#爆炸程度
dev_position = [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]
#绘制圆环图
#shadow表示是否显示阴影,explode表示爆炸程度,startangle表示起始绘制角度
ax.pie(money_scale,labels=kinds,autopct='%3.1f%%',radius=1.0,wedgeprops={'width':0.5},
        pctdistance=3/4,shadow=False,explode=dev_position,startangle=180)
#展示图表
plt.show()

散点图/气泡图

散点图又称X-Y图,是由若干个数据点组成的图表,主要用于判断两变量之间是否存在某种关联,或者总结数据点的分布模式。

绘制散点图

#散点的数量
num = 50
x = np.random.rand(num)
y = np.random.rand(num)
fig = plt.figure()
ax = fig.add_subplot(111)

使用  scatter()   绘制散点图

#绘制散点图
ax.scatter(x,y)

scatter()   也可以绘制气泡图

#导入模板
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.pyplot as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
#x轴和y轴的数据
x_speed = np.arange(10,210,10)
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])
#气泡大小
area = np.linspace(20, 300, 20)#生成一个等距递增数列
fig = plt.figure()
ax = fig.add_subplot(111)
#绘制气泡图
#s表示气泡的大小,c表示气泡的颜色,alpha表示气泡的透明度
ax.scatter(x_speed, y_distance,s=area,c='orange',alpha=0.9)
plt.show()

除此之外,还可以设置气泡的样式marker,气泡边缘的颜色edgecolors。

误差棒图

误差棒图是使用误差棒注明被测量数据的不确定度的大小的图表,用于表示测量数据中客观存在的测量偏差。

绘制误差棒图

导入模板
import matplotlib.pyplot as plt
import numpy as np
#x轴和y轴的数据
x = np.arange(5)
y = (25,32,34,20,25)
#误差数据
y_offset = (3,5,2,3,3)
fig = plt.figure()
ax = fig.add_subplot(111)

使用  errorbar()  函数绘制误差棒图

#绘制误差棒图
#yerr表示数据的误差范围,capsize表示误差棒边界横杆的大小,capthick表示误差棒边界横杆的厚度
ax.errorbar(x,y,yerr=y_offset,capsize=3,capthick=2)
#展示图表
plt.show()

运行如下图:

接下来,我们来看一下误差棒的具体应用

#导入模板
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.pyplot as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
#准备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
#绘制柱形图
plt.bar(x,y1,bar_width)
plt.bar(x + bar_width,y2,bar_width,align="center",tick_label=["春季", "夏季", "秋季"])
plt.bar(x + 2*bar_width,y3,bar_width)
plt.bar(x + 3*bar_width,y4,bar_width)
#绘制误差棒
#elinewidth表示误差棒的线条宽度
#fmt表示数据点的标记样式和数据点之间连接线的样式,格式为 颜色+线型+标记
plt.errorbar(x,y1,yerr=error1,capsize=3,elinewidth=2,fmt='k,')
plt.errorbar(x + bar_width,y2,yerr=error2,capsize=3,elinewidth=2,fmt='k,')
plt.errorbar(x + 2*bar_width,y3,yerr=error3,capsize=3,elinewidth=2,fmt='k,')
plt.errorbar(x + 3*bar_width,y4,yerr=error4,capsize=3,elinewidth=2,fmt='k,')
#展示图表
plt.show()

运行如下图, 

到此,各个图表的简单介绍就到此结束了。 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值