Seaborn 箱线图
可以使用 Python 中的 seaborn 模块创建不同的统计图表。我们可以使用 seaborn.boxplot()
函数创建一个箱线图。
分析师和统计学家经常使用箱线图来表示不同级别或类别的数据。箱线图可以传达许多统计值。下图说明了这一点。
boxplot()
函数可以有效地绘制数据集的分类值,也可以处理单个列表或数组向量。它与小提琴图非常相似。
在下面的例子中,我们绘制了一个单一分布的箱线图,以了解最终的数字。
import random
import numpy as np
import seaborn as sns
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.boxplot(n)
我们还可以在箱线图上绘制散点图。它将让你更好地了解绘制的分布和最终数字。
我们将使用 seaborn.stripplot()
函数来绘制散点图。例如,
import random
import numpy as np
import seaborn as sns
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.boxplot(n)
sns.stripplot(n, color="red")
箱线图可以有效地用于绘制分类变量并使它们的比较变得简单。在以下代码中,我们将绘制多个类别的箱线图。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{
"Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
"Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
"Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
"Product": [
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
],
}
)
sns.boxplot(data=df, y="Price", x="Quantity")
注意在上面的数据集中,我们可以轻松地比较不同数量的价格。我们还可以添加 hue
参数并将其值设置为 Product
变量。这样,我们将能够为不同的产品绘制不同的框。
我们可以使用 matplotlib.pyplot.ylim()
和 matplotlib.pyplot.xlim()
来设置图的 x 和 y 轴的限制。
我们可以使用更多参数来调整最终图。linewidth
参数可用于增加箱线图边界的厚度。我们可以使用 palette
参数为不同类别自定义颜色。可以使用 orient
参数更改方向。还有更多这样的参数可以使用。
请参考下面的代码以了解其中一些参数的应用。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(
{
"Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
"Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
"Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
"Product": [
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
"A",
"A",
"A",
"A",
"B",
"B",
"B",
"B",
],
}
)
sns.boxplot(
data=df, y="Price", x="Quantity", hue="Product", linewidth=2.5, palette="Set2"
)
我们还可以使用 catplot()
函数来创建箱线图。catplot()
函数非常适合绘制分类值。要使用此函数创建箱线图,我们需要将 catplot()
函数中的 kind
参数的值指定为 box
。
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn