You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python统计蜘蛛科出现频次并绘制TOP10类群频次分布图问题咨询

蜘蛛科Top10频次可视化实现方案
  • 先统计带数值的Top10结果,避免单独取索引后还要重新匹配数值:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 若科名包含中文可保留以下两行配置字体,无中文可删除
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

n = 10
# 直接保留Top10的科名和对应频次
top10_family_counts = dfc['family'].value_counts().head(n)
  • 方案1:基于matplotlib绘制水平条形图(更适配较长的科名展示)
plt.figure(figsize=(10, 6))
# 绘制水平条形图
plt.barh(top10_family_counts.index, top10_family_counts.values, color='#3498db')
# 设置标签与标题
plt.xlabel('出现频次', fontsize=12)
plt.ylabel('蜘蛛科名称', fontsize=12)
plt.title('出现频次Top10蜘蛛科分布', fontsize=14, pad=15)
# 调整排序让频次最高的科显示在最上方
plt.gca().invert_yaxis()
# 为每个条形添加数值标注
for idx, val in enumerate(top10_family_counts.values):
    plt.text(val + 1, idx, str(val), va='center')
plt.tight_layout()
plt.show()
  • 方案2:基于seaborn绘制风格更统一的条形图
plt.figure(figsize=(10, 6))
# 转换为DataFrame适配seaborn接口
plot_data = top10_family_counts.reset_index()
plot_data.columns = ['family', 'count']

sns.barplot(data=plot_data, x='count', y='family', palette='Blues_r')
plt.xlabel('出现频次', fontsize=12)
plt.ylabel('蜘蛛科名称', fontsize=12)
plt.title('出现频次Top10蜘蛛科分布', fontsize=14, pad=15)
# 添加数值标注
for idx, val in enumerate(plot_data['count']):
    plt.text(val + 1, idx, str(val), va='center')
plt.tight_layout()
plt.show()

可选调整说明

  • 若需要垂直条形图,将barh替换为bar,互换x、y轴的取值即可
  • 可通过调整figsize参数修改图表尺寸,通过color/palette参数修改配色
  • 数值标注的偏移量(代码中的+1)可根据实际数值范围调整,避免文字溢出

内容的提问来源于stack exchange,提问作者Swat1999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:15:03