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

如何用Matplotlib绘制零高度Y轴的英寸-毫米转换一维标尺

解决方法

你只需要对代码做几处调整即可实现效果:

  • 初始化画布时设置极小的画布高度,适配一维标尺的形态
  • 将Y轴范围限制为[0, 0]直接压缩垂直空间
  • 隐藏所有Y轴相关的显示元素
  • 微调两个X轴的标签边距,让上下刻度标识贴合显示

修改后完整可运行代码如下:

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
from fractions import Fraction

# 画布宽度可按需调整,高度设为极小值适配一维标尺
fig, ax1 = plt.subplots(figsize=(12, 0.5))
ax2 = ax1.twiny()

# 底部毫米刻度配置
ax1.set_xlim(0, 25.4)
ax1.xaxis.set_major_locator(MultipleLocator(1))
ax1.xaxis.set_major_formatter('{x:.0f}')
ax1.xaxis.set_minor_locator(MultipleLocator(0.5))
# 调整底部标签边距,向上贴合
ax1.tick_params(axis='x', pad=0)

# 顶部英寸刻度配置
ax2.set_xlim(0, 1)
ax2.xaxis.set_major_locator(MultipleLocator(1/16))
ax2.xaxis.set_major_formatter(lambda x, pos: str(Fraction(x)))
ax2.xaxis.set_minor_locator(MultipleLocator(1/32))
# 调整顶部标签边距,向下贴合
ax2.tick_params(axis='x', pad=0)

# 压缩Y轴为0高度,隐藏所有Y轴元素
ax1.set_ylim(0, 0)
ax1.yaxis.set_visible(False)
# 隐藏多余边框
ax1.spines[['left', 'right', 'bottom', 'top']].set_visible(False)
ax2.spines[['left', 'right', 'bottom', 'top']].set_visible(False)

plt.tight_layout()
# 如需直接导出可打印高清矢量图,可替换plt.show()为下面的代码
# plt.savefig('inch_mm_ruler.svg', dpi=300, bbox_inches='tight')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:27:00