Matplotlib x轴标签问题

wecizke3  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(165)

看起来,当我在我的频率范围内绘制SNR数据点时,最终的频率值仍然停留在前一个频率值旁边。有没有人见过这个问题,或者有解决方案?

# Plot the SNR values
        plt.figure(figsize=(15,6))  # Create a new figure object
        plt.plot(frequency, SNR, label='SNR', marker='.')
        plt.xlabel('Frequency [MHz]')
        plt.ylabel('SNR')
        plt.title('SNR vs Frequency')
        plt.xticks(rotation=90)

字符串
我试过调整长度的情节,这有助于分离的x轴标签,但没有固定的最终标签


的数据

pjngdqdw

pjngdqdw1#

由于某种原因,x轴值的间距不是均匀的。Matplotlib的自动收报机功能被搞混了。拟定解决方案:尝试添加这一行:plt.gca().xaxis.set_major_locator(ticker.MaxNLocator(integer=True, nbins=10))以强制适当的收报机间距。您可以根据需要调整箱数(nbins)。
您的完整代码将变为:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

plt.figure(figsize=(15,6))
plt.plot(frequency, SNR, label='SNR', marker='.')
plt.xlabel('Frequency [MHz]')
plt.ylabel('SNR')
plt.title('SNR vs Frequency')
plt.gca().xaxis.set_major_locator(ticker.MaxNLocator(integer=True, nbins=10))
plt.xticks(rotation=90)

字符串

byqmnocz

byqmnocz2#

这段代码部分解决了这个问题:

ax = plt.gca()

        # # Hide every 2nd x-axis label
        n = 2  # Keeps every 2nd label
        for (i, l) in enumerate(ax.xaxis.get_ticklabels()):
            if i <=3:
                continue
            
            if i % n == 0:
                l.set_visible(False)

字符串
此循环使前三个标签可见,然后继续标记每隔一个频率

相关问题