gpt4 book ai didi

matplotlib - 如何更改 matplotlib 中轴标签的格式

转载 作者:行者123 更新时间:2023-12-03 16:30:09 27 4
gpt4 key购买 nike

如果我绘制对数刻度图,matplotlib 会给我漂亮的条目 105、106、...

然而,为了可读性,我更喜欢 1e5, 1e6, ...

我可以直接将轴属性设置为那样吗?

我相当丑陋的黑客将是:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(1, 40, 100);
y = np.linspace(1, 5, 100);

# Actually plot the exponential values
plt.plot(x, 10**y)
ax = plt.gca()
ax.set_yscale('log')

# Rewrite the y labels
y_labels = ax.get_yticks()
ax.set_yticklabels(['1e%i' % np.round(np.log(y)/np.log(10)) for y in y_labels])

plt.show()

但肯定有更好的方法。

最佳答案

您使用 ticker.FormatStrFormatter('%0.0e') 。这使用字符串格式 %0.0e 格式化每个数字,该格式使用指数表示法表示浮点数:

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

x = np.linspace(1, 40, 100)
y = np.linspace(1, 5, 100)

# Actually plot the exponential values
fig, ax = plt.subplots()
ax.plot(x, 10**y)
ax.set_yscale('log')

# Rewrite the y labels
y_labels = ax.get_yticks()
ax.yaxis.set_major_formatter(ticker.FormatStrFormatter('%0.0e'))

plt.show()

产量

关于matplotlib - 如何更改 matplotlib 中轴标签的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30648889/

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