以对数刻度间距绘制 x 轴,但不以指数形式标记它

2024-02-13

我想绘制两个值x = [0, 10,20,50,100] and y=[1,2,3,10,100] 使用pylab。我想将 x 轴的间距保持为对数形式。但我想在 x i'e 的值 10、20、50、100 处勾选并打印它们,因为它不是 10e1 或 10e2 的形式。我这样做如下:

 import matplotlib.pylab as plt
 plt.xscale('log')
 plt.plot(x, y)
 plt.xticks(x)
 plt.grid()

但它保持值的形式为 10e1, 10e2。

你能帮我一下吗?


我认为你想要的是改变major_formatterx 轴?

import matplotlib.pylab as plt
import numpy as np
from matplotlib.ticker import ScalarFormatter

x = [0, 10,20,50,100]
y=[1,2,3,10,100]

plt.plot(x, y)
plt.xscale('log')
plt.grid()

ax = plt.gca()
ax.set_xticks(x[1:]) # note that with a log axis, you can't have x = 0 so that value isn't plotted.
ax.xaxis.set_major_formatter(ScalarFormatter())

plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以对数刻度间距绘制 x 轴,但不以指数形式标记它 的相关文章

随机推荐