python - sns.countplot() 可以在绘制的条形图上显示数字吗?
问题描述
我正在使用 MNIST 数据集并用于sns.countplot()
绘制火车图像,这给出了
有没有办法在某处添加条的值?每个上面?在里面/下面?目前我看到实际值使用print
和干扰,sns.countplot()
因为绘图总是在打印之前输出
我正在使用与此非常相似的代码,但我仍然没有得到任何注释。
# print and plot digit count
plt.figure(figsize=(12,5))
digit_count = sns.countplot(Y_train)
plt.title('Distribution of digits')
for d in digit_count.patches:
digit_count.annotate('%{:.1f}'.format(d.get_height()), (d.get_x()+0.1, d.get_height()+50))
从 打印值时p.get_x()
,p.get_height()
我得到了正确的值,但它们没有显示在列的顶部
还尝试添加twinx
... 也没有帮助:
twin_table = digit_count.twinx()
twin_table.set_yticks(np.arange(0, 110, 10))
它只添加了一个辅助 y 轴(我也不知道如何命名......):
解决方案
图书馆和数据集
import seaborn as sns, numpy as np
df = sns.load_dataset("iris")
# Basic countplot
ax = sns.countplot(x="species", y="sepal_length", data=df)
计算每组的 obs 数和中位数以定位标签
medians = df.groupby(['species'])['sepal_length'].median().values
nobs = df['species'].value_counts().values
nobs = [str(x) for x in nobs.tolist()]
nobs = ["n: " + i for i in nobs]
将其添加到情节
pos = range(len(nobs))
for tick,label in zip(pos,ax.get_xticklabels()):
ax.text(pos[tick], medians[tick] + 0.03, nobs[tick], horizontalalignment='center', size='x-small', color='w', weight='semibold')
sns.plt.show()
推荐阅读
- json - MXNET CNN+LSTM save/serialize to json
- r - R中没有带有标签的轴的气泡图
- java - java - 如何以时区为输入在没有服务器时间的情况下获取正确的日期和时间
- scala - 有没有办法在远程环境中的 Intellij 中运行 scala 表?
- python - 将熊猫数据框列映射到字典
- r - 按组重复序列
- python - 查找坐标以在显示器上随机分布图像而不会重叠
- javascript - 目标时约束 orbitControls maxDistance,THREE.js
- go - 去切片-结束后不要惊慌
- applescript - 设置自定义应用程序图标时,AppleScript 应用程序的代码签名不起作用