前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >绘制统计图形(二)

绘制统计图形(二)

作者头像
python数据可视化之路
发布2023-02-23 21:13:02
1.2K0
发布2023-02-23 21:13:02
举报

5 箱线图

箱线图是由一个箱体和一对箱须所构成的统计图形。箱体是由第一四分位数、中位数、第三四分位数组成。在箱须末端之外的可以认为是离群值,因此箱须是对一组数据的大致直观描述。

5.1 多组数据的箱线图

代码如下:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
data1 = np.random.randn(5000)
data2 = np.random.randn(5000)
dataList = [data1, data2]
labels = ['随机数组1', '随机数组2']
colors = ['#0000ff', '#00ff00']
bplot = plt.boxplot(dataList, sym = '+', labels = labels, patch_artist = True, widths = 0.35, whis = 1.6, notch = False)
for patch, color in zip(bplot['boxes'], colors):
    patch.set_facecolor(color) #为每一组数据设置相应的颜色
plt.ylabel('随机数值')
plt.title('两组随机数的箱线图')
plt.grid(axis = 'y', ls = ':', lw = 1, color = 'gray', alpha = .4)
plt.show()

参数解释:

testList箱线图的输入数据

whis:四分位间距的倍数,用来确定箱须包含数据的范围大小

widths:设置箱体宽度

sym:设置离群值的标记样式

patch_artist:是否给箱体添加颜色

notch:是否控制箱体有‘V’型凹痕

5.2 水平方向的箱线图

代码如下:

代码语言:javascript
复制
bplot = plt.boxplot(dataList, sym = '+', labels = labels, patch_artist = True, widths = 0.35, whis = 1.6, notch = False,
                   vert = False)
for patch, color in zip(bplot['boxes'], colors):
    patch.set_facecolor(color) #为每一组数据设置相应的颜色
plt.xlabel('随机数值', fontsize = 12)
plt.yticks(rotation = 90, fontsize = 12)
plt.title('两组随机数的箱线图', fontsize = 16)
plt.grid(axis = 'y', ls = ':', lw = 1, color = 'gray', alpha = .4)
plt.show()

与上一个代码相比,仅仅多了一个vert参数,该参数控制是否竖直显示。值为False,为水平显示,默认值为True,即竖直显示。

同时添加showfliers参数可以控制是否显示离群值,当为False,不显示离群值,默认值为True,即显示离群值。

6 误差棒图

在许多科学实验中都存在测量或实验误差,这是无法控制的客观因素。在可视化实验结果的时候,最好可以给实验结果增加观测结果的误差,以表示客观存在的误差。误差棒则是一种理想的统计图形。

6.1 定量数据的误差范围

代码如下:

代码语言:javascript
复制
x = np.linspace(0.1, 0.6, 10)
y = np.exp(x)
error = 0.05+0.15*x
lower_err = error
upper_err = error*0.3
error_limit = [lower_err, upper_err]
plt.errorbar(x, y, yerr = error_limit, fmt = ':o', ecolor = 'y', elinewidth = 4
            , ms = 5, mfc = 'c', mec = 'r', capthick = 1, capsize = 2)
plt.xlim(0, 0.7)
plt.show()

参数解释:

x,y:数据点的位置

yerr:单一数值的非对称形式误差范围

fmt:数据点的标记样式和数据点标记的连接线样式

ecolor:误差棒的线条颜色

elinewidth:误差棒的线条粗细

ms:数据点的大小

mfc:数据点标记颜色

mec:数据点标记边缘颜色

capthick:误差棒边界横杠厚度

capsize:误差棒边界横杠大小

6.2 带误差棒的柱状图

代码如下:

代码语言:javascript
复制
x = np.arange(5)
y = [100, 68, 79, 91, 82]
std_err = [7, 2, 6, 10, 5]
error_attri = dict(elinewidth = 2, ecolor = 'black', capsize = 3)
plt.bar(x, y, color = 'c', width = 0.6, align = 'center', yerr = std_err, error_kw = error_attri, 
       tick_label = ['园区1', '园区2', '园区3', '园区4', '园区5'])
plt.xlabel('苹果种植区', fontsize = 14)
plt.ylabel('收获数', fontsize = 14)
plt.title('不同园区的苹果收获数', fontsize = 16, fontfamily = 'KaiTi')
plt.show()

参数解释:

yerr:误差,是一个区间

error_kw:误差棒的样式设置,是一个字典对象

6.3 带误差棒的条形图

代码如下:

代码语言:javascript
复制
x = np.arange(5)
y = [1200, 2400, 500, 1600, 2200]
std_err = [150, 100, 180, 130, 80]
error_attri = dict(elinewidth = 2, ecolor = 'black', capsize = 3)
bar_width = 0.6
colors = ['#e41a1c', '#377eac', '#4daf44', '#984ea3', '#00ffff']
plt.barh(x, y, bar_width, color = colors, align = 'center', xerr = std_err, error_kw = error_attri, 
         tick_label = ['家庭', '小说', '情感', '科技', '儿童'])
plt.xlabel('订阅数量')
plt.ylabel('图书种类')
plt.title('不同图书的订阅数量')
plt.grid(True, axis = 'x', ls = ':', color = 'gray', alpha = .2)
plt.show()

6.4 带误差棒的多数据并列柱状图

代码如下:

代码语言:javascript
复制
x = np.arange(5)
y1 = [100, 68, 79, 91, 82]
y2 = [120, 75, 70, 78, 85]
std_err1 = [7, 2, 6, 10, 5]
std_err2 = [5, 1, 4, 8, 9]
error_attri = dict(elinewidth = 2, ecolor = 'black', capsize = 3)
bar_width = 0.4
tick_label = ['园区1', '园区2', '园区3', '园区4', '园区5']
plt.bar(x, y1, bar_width, color = '#87ceeb', align = 'center', yerr = std_err1, error_kw = error_attri, label = '2010')
plt.bar(x+bar_width, y2, bar_width, color = '#cd5c5c', align = 'center', yerr = std_err2, error_kw = error_attri, label = '2013')
plt.xlabel('苹果种植区', fontsize = 14)
plt.ylabel('收获量', fontsize = 14)
plt.xticks(x+bar_width/2, tick_label) #让标签居中,固定用法
plt.title('不同年份的苹果收获量', fontsize = 16, fontfamily = 'KaiTi')
plt.grid(True, axis = 'y', ls = ':', color = 'gray', alpha = .4)
plt.show()

本次的绘制统计图形到此结束,如果以后有新的图形,会再次补充。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python数据可视化之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档