大家好,今天我将分享如何使用matplotlib绘制带方差的条形图。
昨天回顾:
1.绘制了两种条形图,水平条形图使用berh(),竖直条形图使用bar()
2.复习了解决中文乱码等问题。
忘了的可以回顾一下第七天的内容:matplotlib第七天:学习如何绘制条形图 - 掘金 (juejin.cn)
好的,那么我们现在开始进入正题:
from matplotlib import pyplot as plt
import numpy as np
#准备数据
x=range(3)
x_label=['bar1','bar2','bar3']
y=[1,2,3]
#波动
variance=[0.2,0.4,0.5]
#绘制柱形图
plt.bar(x, y, width=0.3, yerr=variance) # yerr代表上下浮动值
max_y=max(zip(y,variance)) #没有考虑到y轴的大小,将(最大的值+浮动值)*1.n
plt.ylim([0,(max_y[0]+max_y[1])*1.2])
plt.xticks(x,x_label)
plt.show()
这是一个带方差的条形图,接下来我会对代码进行一一解释:
from matplotlib import pyplot as plt
import numpy as np
1.导入 matplotlib 库和 numpy 库,分别将其命名为 plt, np。
x_label=['bar1','bar2','bar3']
2.x_label 是一个列表,其中包含了柱状图每个柱子的标签。在这个例子中,x_label 包含了三个元素:'bar1'、'bar2' 和 'bar3'。这些标签将会显示在柱状图的 x 轴上,用于标识每个柱子所代表的数据。
3.variance=[0.2,0.4,0.5]分别设置的是['bar1','bar2','bar3']的波动值。
4.plt.bar(x, y, width=0.3, yerr=variance)的解释如下:
这行代码有两个额外的参数:width 和 yerr。
width=0.3:这个参数指定了每个柱子的宽度。默认情况下,每个柱子的宽度是根据数据的间距自动计算的。但是,你可以使用width参数来手动设置柱子的宽度。在这个例子中,每个柱子的宽度被设置为 0.3。yerr=variance:这个参数用于指定每个柱子的误差条。误差条可以用来表示数据的不确定性或标准差。variance是一个包含了每个柱子的误差值的列表或数组。在柱状图中,每个柱子上会绘制一个垂直的误差条,表示数据的误差范围。
max_y=max(zip(y,variance))
5.这行代码的作用是找到 y 和 variance 中的最大值。zip(y, variance) 将 y 和 variance 中的元素逐个配对,然后 max() 函数找到这些配对中的最大值。max_y 是一个元组,包含了最大值和对应的误差值。
接下来我来讲一讲python的zip()函数:
当你想要同时迭代多个可迭代对象时,zip() 函数是一个非常有用的工具。它接受任意数量的可迭代对象(例如列表、元组、字符串等),并返回一个由这些可迭代对象中的元素按顺序组成的元组构成的迭代器。
这里是 zip() 函数的一般语法:
zip(*iterables)
其中,iterables 是一个或多个可迭代对象,可以是列表、元组、字符串等。
zip() 函数将返回一个迭代器,该迭代器生成由输入的可迭代对象中的元素按顺序组成的元组。迭代器将在最短的输入可迭代对象用尽时停止。
让我们看一个例子来说明 zip() 函数的使用:
numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
result = zip(numbers, letters)
for item in result:
print(item)
输出结果为:
(1, 'a')
(2, 'b')
(3, 'c')
在上面的例子中,zip(numbers, letters) 将 numbers 和 letters 中的元素逐个配对,并返回一个迭代器。在 for 循环中,我们遍历这个迭代器并打印每个配对的元素。
zip() 函数在许多场景中都很有用,例如在需要同时迭代多个列表、合并数据、进行数据转换等情况下。它使得处理多个相关的可迭代对象变得更加简洁和方便。
6.下面我们来看一看plt.ylim([0, (max_y[0] + max_y[1]) * 1.2])
这行代码
这行代码主要是用于设置 Matplotlib 图表中 y 轴的取值范围。
具体来说,plt.ylim() 函数用于设置坐标轴的上下限。在这个例子中,将 y 轴的下限设置为 0,而将上限设置为 (max_y[0] + max_y[1]) * 1.2。
(max_y[0] + max_y[1]) * 1.2 的计算结果是将最大值和误差值相加,然后乘以 1.2。这样做的目的是为了在 y 轴的上限上增加一些余量,以便能够容纳柱状图和误差条的显示,避免它们超出图表的范围。(其实就是让它看起来更美观而已,加不加都行)
最后用plt.show()将带方差的条形图表示出来就行了。
今天我们学习了许多新的知识,下面我们来对今天所学的知识进行小结:
1.学习如何绘制带方差的条形图
2.学习了zip()函数的概念及其使用
3.学习了如何表示数据的波动
好了,今天就讲到这里了,希望与各位一起学习数据分析,有问题可以在评论区提问,我非常愿意与大家一同探讨!