matplotlib:在显示实际值的同时在 semilogx 中绘图

matplotlib : plot in semilogx while displaying the actual values

我需要打印一个 semilogx 图表,只有 x 轴应该显示 xdata 中包含的值,我所做的是

import matplotlib.pyplot as plt

def plot_stuff(xdata, ydata):
    """ 
    """
    plt.clf()
    # titles and stuff ... 
    plt.semilogx(xdata, ydata)

    plt.xticks(xdata) # this line won't do the work

    plt.show()

我得到的只是一个沿 x 轴显示值 10^0 ... 10^n 的图表。有没有办法纠正这个?

这会是您要找的吗?

import matplotlib.pyplot as plt

def plot_stuff(xdata, ydata):
    """ 
    """
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.semilogx(xdata, ydata)

    ax.set_xticks(xdata)
    ax.set_xticklabels(xdata)

    plt.show()

the pyplot.xticks() doc 所示,xticks() 的第一个参数是刻度位置,第二个是刻度标签。因此,plt.xticks(xdata) 仅更改刻度位置,但不会将刻度标签也放在那里。
因为您希望位置和标签相同,所以您可以简单地使用:

plt.xticks(xdata, xdata)