Matplotlib 日志绘图中的自定义xticks标签

Matplotlib 日志绘图中的自定义xticks标签,matplotlib,plot,loglog,Matplotlib,Plot,Loglog,一个简单的例子如下: import numpy as np import numpy.random as npr import matplotlib.pyplot as plt N = 1000 x = np.linspace(1, 5, N) y = npr.randint(1e16, size = N) / 1e16 y = np.sort(y) fig, ax = plt.subplots() ax.loglog(x, y, '.') ax.grid(True, 'both') 我想

一个简单的例子如下:

import numpy as np
import numpy.random as npr
import matplotlib.pyplot as plt
N = 1000
x = np.linspace(1, 5, N)
y = npr.randint(1e16, size = N) / 1e16
y = np.sort(y)

fig, ax = plt.subplots()
ax.loglog(x, y, '.')
ax.grid(True, 'both')

我想替换XTICK的地方。到目前为止,我尝试的一切都失败了:

ax.set_xticks([2, 3, 4], ['a', 'b', 'c'])
ax.xaxis.set_ticks_position('none') 
ax.set_xticks([])

以上各项均未显示任何效果。我的目标是用自定义的记号(字符串或整数)替换记号。所以不是2 x 10⁰ 应该只有2个。其他xtick也类似。

可能这就是您所追求的:

import numpy as np
import matplotlib.pyplot as plt
N = 1000
x = np.linspace(1, 5, N)
y = np.random.rand(N)
y = np.sort(y)

fig, ax = plt.subplots()
ax.loglog(x, y, '.')
ax.grid(True, 'both')

ax.set_xticks([2, 3, 4])
ax.set_xticklabels(['a', 'b', 'c'])
ax.minorticks_off()

plt.show()

是的,就是这样!