bar seaborn 图表上的多个注释
multiple annotations on bar seaborn chart
STRUD
Struct_Count
Perc
Row
1151
38.37
Single
865
28.83
Detached
447
14.90
Row End
384
12.80
Multi
146
4.87
Inside
3
0.10
Missing
2
0.07
Default
1
0.03
Town End
1
0.03
plt.figure(figsize=(15, 8))
plots = sns.barplot(x="STRUD", y="Struct_Count", data=df2)
for bar in plots.patches:
# Using Matplotlib's annotate function and
# passing the coordinates where the annotation shall be done
plots.annotate(format(bar.get_height(), '.0f'),
(bar.get_x() + bar.get_width() / 2,
bar.get_height()), ha='center', va='center',
size=13, xytext=(0, 5),
textcoords='offset points')
plt.title("Distribution of STRUCT")
plt.show()
通过从论坛中学到的上述代码,我可以绘制 'struct_count' 值,我如何在条形图上绘制相应的百分比值。提前感谢您的帮助。
您可以尝试使用 ax.bar_label
来设置自定义标签。不需要注释和循环。
我假设下面的例子是你所说的“在条上绘制相应的百分比值”的意思,但它可以灵活调整。
请注意,这不会显示小于 1% 的值,因为这些值会与 x-axis 和其他标签重叠。这也可以在下面轻松调整。
The docs 有一些有启发性的例子。
import seaborn as sns
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1, figsize=(15, 8))
plots = sns.barplot(x="STRUD", y="Struct_Count", data=df2, ax=ax)
ax.bar_label(ax.containers[0])
ax.bar_label(ax.containers[0],
labels=[f'{e}%' if e > 1 else "" for e in df2.Perc],
label_type="center")
plt.title("Distribution of STRUCT")
STRUD | Struct_Count | Perc |
---|---|---|
Row | 1151 | 38.37 |
Single | 865 | 28.83 |
Detached | 447 | 14.90 |
Row End | 384 | 12.80 |
Multi | 146 | 4.87 |
Inside | 3 | 0.10 |
Missing | 2 | 0.07 |
Default | 1 | 0.03 |
Town End | 1 | 0.03 |
plt.figure(figsize=(15, 8))
plots = sns.barplot(x="STRUD", y="Struct_Count", data=df2)
for bar in plots.patches:
# Using Matplotlib's annotate function and
# passing the coordinates where the annotation shall be done
plots.annotate(format(bar.get_height(), '.0f'),
(bar.get_x() + bar.get_width() / 2,
bar.get_height()), ha='center', va='center',
size=13, xytext=(0, 5),
textcoords='offset points')
plt.title("Distribution of STRUCT")
plt.show()
通过从论坛中学到的上述代码,我可以绘制 'struct_count' 值,我如何在条形图上绘制相应的百分比值。提前感谢您的帮助。
您可以尝试使用 ax.bar_label
来设置自定义标签。不需要注释和循环。
我假设下面的例子是你所说的“在条上绘制相应的百分比值”的意思,但它可以灵活调整。
请注意,这不会显示小于 1% 的值,因为这些值会与 x-axis 和其他标签重叠。这也可以在下面轻松调整。
The docs 有一些有启发性的例子。
import seaborn as sns
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1, figsize=(15, 8))
plots = sns.barplot(x="STRUD", y="Struct_Count", data=df2, ax=ax)
ax.bar_label(ax.containers[0])
ax.bar_label(ax.containers[0],
labels=[f'{e}%' if e > 1 else "" for e in df2.Perc],
label_type="center")
plt.title("Distribution of STRUCT")