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

如何用matplotlib绘制X轴为对数刻度且条形间有间隔的柱状图

问题原因

固定宽度0.000001不符合对数轴的显示逻辑:对数坐标轴上不同数量级的位置对宽度的感知差异极大,极小的固定宽度在x值较大的位置会几乎缩成细线,自然无法得到均匀的柱状图效果。

解决方案

将每个柱子的宽度设置为对应x值的固定比例,这样所有柱子在对数轴上的视觉宽度一致,且自动留出均匀间隔,修改后的代码如下:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()

x = [0.000001,0.00001,0.0001,0.001,0.01,0.1,1.0]
height = [5.3,1.8,8.24,5.8,2.8,3.3,4.2]
# 宽度设为当前x值的40%,调整比例即可改变柱子宽度和间隔大小
width = [i * 0.4 for i in x]

plt.bar(x, height, width=width, color='b' )
plt.xscale("log")
# 可选:设置x轴刻度显示为实际的x值,更易读
plt.xticks(x, x)
plt.savefig('SimpleBar.png')
plt.show()

如果需要调整柱子间隔,只要修改0.4这个比例即可:比例越小,柱子越窄,间隔越大。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:15:01