5 箱线图
箱线图是由一个箱体和一对箱须所构成的统计图形。箱体是由第一四分位数、中位数、第三四分位数组成。在箱须末端之外的可以认为是离群值,因此箱须是对一组数据的大致直观描述。
5.1 多组数据的箱线图
代码如下:
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 水平方向的箱线图
代码如下:
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 定量数据的误差范围
代码如下:
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 带误差棒的柱状图
代码如下:
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 带误差棒的条形图
代码如下:
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 带误差棒的多数据并列柱状图
代码如下:
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()
本次的绘制统计图形到此结束,如果以后有新的图形,会再次补充。
本文分享自 python数据可视化之美 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!