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

如何在matplotlib中绘制双对数(Log-Log)直方图

双对数(Log-Log)频率直方图实现方法

你只需要在现有代码的基础上,额外设置x、y轴的缩放模式为对数即可实现双对数展示,可根据需求选择最简修改方案或优化方案:

最简修改方案

直接在原有绘图代码末尾添加两行轴缩放设置即可,无需修改原有绘图逻辑:

import matplotlib.pyplot as plt
my_list = [1,2,3,3,3,4,1,2,5,2,10,4,5,3,3,3,2,1]
# 原有绘图逻辑
plt.hist(my_list, label='Frequency Distribution of matches')
plt.legend()
plt.ylabel('Frequency')
# 新增双对数设置
plt.xscale('log')
plt.yscale('log')
plt.show()

优化适配方案

如果你的样本数值跨度较大,默认线性分箱会出现低数值区间箱过窄、高数值区间箱过宽的问题,可以提前生成对数间隔的分箱适配双对数轴:

import numpy as np
import matplotlib.pyplot as plt
my_list = [1,2,3,3,3,4,1,2,5,2,10,4,5,3,3,3,2,1]
# 生成对数间隔的分箱
log_bins = np.logspace(np.log10(min(my_list)), np.log10(max(my_list)), num=10)
plt.hist(my_list, bins=log_bins, label='Frequency Distribution of matches')
plt.legend()
plt.ylabel('Frequency')
plt.xscale('log')
plt.yscale('log')
# 可选:手动设置x轴刻度显示,避免对数刻度标签可读性差
plt.xticks([1,2,3,4,5,10], ['1','2','3','4','5','10'])
plt.show()

注意事项

  • 只需要单轴对数的话,删掉不需要的*scale设置即可
  • num参数用于控制分箱数量,可根据自己的数据分布调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:45:01