如何在 Seaborn 条形图上显示数值?


在 Seaborn 的条形图中,会显示数值变量的平均值,误差线则表示围绕平均值的可能值范围。在比较数值与 0 时,这很有帮助。在 Python 中,我们有一些内置函数,如 barplot()、enumerate() 和 text(),可用于在 Seaborn 条形图上显示数值。例如,我们可以使用条形图比较各种产品的平均销售额或不同教室的学生的平均考试成绩。

语法

以下语法在示例中使用:

barplot()

这是 Python 中的内置函数,用于比较类别之间的相似性。它可以用于比较不同组的平均值。

enumerate()

这是 Python 中的内置函数,它为可迭代对象添加计数器并返回枚举对象。此函数接受两个参数:一个可迭代对象和一个起始索引(默认值为 0)。

show()

show 方法在程序的末尾使用,根据问题陈述返回图形结果。

示例 1

在以下示例中,我们将显示条形图上方的数值。程序以必要的模块 seaborn 和 matplotlib.pyplot 开始,分别引用为 sns 和 plt。然后它定义了两个轴 x_ax 和 y_ax 来填充数据。接下来,使用内置函数 barplot() 创建条形图,并将其存储在变量 ax 中。通过使用 enumerate() 迭代 y 值并在 ax.text() 中添加文本,在条形图上方添加数值。最后,使用 show() 方法返回结果。

# Show values above bars
import seaborn as sns
import matplotlib.pyplot as plt

# Data
x_ax = ['A', 'B', 'C', 'D', 'E']
y_ax = [4, 1, 4.5, 2, 3]

# Create a barplot
ax = sns.barplot(x=x_ax, y=y_ax)

# Add values above bars
for i, v in enumerate(y):
   ax.text(i, v + 0.2, str(v), ha='center')
plt.show()

输出

示例 2

在以下示例中,我们将通过导入模块 seaborn 和 matplotlib.pyplot 开始程序,分别引用为 sns 和 plt。然后使用 sns.barplot() 创建条形图,分别使用 x_ax 和 y_ax 作为 x 轴和 y 轴的参数。接下来,使用 for 循环和 enumerate(y) 迭代 y 轴数据,以获取列表中每个元素的索引 i 和值 v。然后使用 ax 对象的 text() 方法在条形图内添加文本。第一个参数是文本的 x 坐标,设置为 i 以与每个条形图的中心对齐。

第二个参数是文本的 y 坐标,设置为 v/2 以将文本放置在每个条形图的中间。第三个参数是要显示的文本,设置为 str(v) 以将每个条形图的值显示为字符串。ha 参数设置为 'center' 以将文本水平居中对齐在每个条形图的中心。color 参数设置为 'white' 以使文本为白色。最后,我们借助内置方法 show() 获取结果。

# Show values inside bars
import seaborn as sns
import matplotlib.pyplot as plt

# Data
x_ax = ['A', 'B', 'C', 'D', 'E']
y_ax = [3, 1, 4, 8, 2]

# Create a barplot
ax = sns.barplot(x=x_ax, y=y_ax)
# Add values inside bars
for i, v in enumerate(y):
   ax.text(i, v/2, str(v), ha='center', color='white')
plt.show()

输出

示例 3

在以下示例中,我们将显示具有自定义格式的数值。通过导入必要的模块 seaborn(用于创建条形图)和 matplotlib.pyplot(用于显示图形)开始程序。然后定义 x 轴和 y 轴的数据。接下来,使用 sns.barplot() 创建条形图,分别使用 x 和 y 作为 x 轴和 y 轴的参数。然后使用 for 循环迭代 y 轴数据,并使用 ax 对象的 text() 方法在条形图内添加文本,并使用自定义格式。最后,使用 plt.show() 显示图形。

# Show values with custom formatting
import seaborn as sns
import matplotlib.pyplot as plt

# Data
x = ['A', 'B', 'C', 'D']
y = [0.3, 0.1, 0.2, 1]

# Create a barplot
ax = sns.barplot(x=x, y=y)

# Add values with custom formatting
for i, v in enumerate(y):
   ax.text(i, v + 0.02, f'{v:.0%}', ha='center')

plt.show()

输出

示例 4

在以下示例中,我们将显示具有自定义颜色和字体大小的数值。我们将首先提及必要的模块 seaborn 和 matplotlib.pyplot。然后创建 x 轴和 y 轴的数据,并使用内置方法 barplot() 根据轴设置条形图。然后使用 for 循环迭代 y 轴数据,并使用 ax 对象的 text() 方法在条形图内添加文本,并使用自定义颜色和字体大小。最后,使用 show() 显示图形。

# Show values with custom color and font size
import seaborn as sns
import matplotlib.pyplot as plt

# Data
x_axes = ['A', 'B', 'C']
y_axes = [3, 1, 4]

# Create a barplot
ax = sns.barplot(x=x_axes, y=y_axes)

# Add values with custom color and font size
for i, v in enumerate(y):
   ax.text(i, v + 0.2, str(v), ha='center', color='#ab09eb', fontsize=21)

plt.show()

输出

示例 5

在以下示例中,使用 seaborn 和 matplotlib 模块,此程序生成条形图并在条形图内显示具有自定义位置和旋转的数值。数值旋转 45 度,并放置在每个条形图中心的左侧。

#Show values with custom position and rotation
import seaborn as sns
import matplotlib.pyplot as plt

# Data
x = ['A', 'B', 'C']
y = [3, 1, 4]

# Create a barplot
ax = sns.barplot(x=x, y=y)

# Add values with custom position and rotation
for i, v in enumerate(y):
   ax.text(i - 0.15, v + 0.2, str(v), ha='center', rotation=45)

plt.show()

输出

结论

我们讨论了表示 Seaborn 条形图的不同方法。我们看到了 enumerate() 函数如何帮助添加计数器以进行迭代。然后我们看到了使用名为 ha、rotation、color 等引用的数值格式。这种类型的图形通常用于数据科学和数据分析领域。

更新于:2023-07-17

5K+ 阅读量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告