gpt4 book ai didi

Python Matplotlib : plotting feet and inches

转载 作者:行者123 更新时间:2023-11-28 22:36:53 25 4
gpt4 key购买 nike

我想在 pylab 中绘制一个图,它在 y 轴上显示英尺,并将英尺分割为英寸而不是英尺的分数。这在公制系统中不是问题,因为单位分割与十进制系统一致,但使用英制单位时确实会使图表难以阅读。

这可能吗?

我现在拥有的:

40 ft    |
39.90 |
39.80 |
39.70 |
39.60 |
39.50 |------------>

我想要的:

40 ft     |
39 11in |
39 10in |
39 9in |
39 8in |
39 7in |
39 6in |------------>

最佳答案

您可以使用 ticker.FuncFormatter 创建 custom tick label :

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

x = np.linspace(0, 1, 100)
y = (np.random.random(100) - 0.5).cumsum()

fig, ax = plt.subplots()
ax.plot(x, y)

def imperial(x, pos):
ft, inches = divmod(round(x*12), 12)
ft, inches = map(int, [ft, inches])
return ('{} ft'.format(ft) if not inches
else '{} {} in'.format(ft, inches) if ft
else '{} in'.format(inches))

ax.yaxis.set_major_formatter(ticker.FuncFormatter(imperial))

plt.show()

enter image description here


要同时控制刻度的位置,您可以使用 ticker.MultipleLocator。例如,要每 4 英寸放置一个刻度线,添加

loc = ticker.MultipleLocator(4./12)
ax.yaxis.set_major_locator(loc)

上面的代码。 enter image description here

关于Python Matplotlib : plotting feet and inches,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37088428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com