gpt4 book ai didi

python - 设置 xticklabel 与旧 xtick 重叠

转载 作者:行者123 更新时间:2023-12-01 02:02:07 26 4
gpt4 key购买 nike

我正在尝试修改绘图的 x 刻度,但由 matplotlib 自动生成的刻度标签之一不会消失,并且我指定的刻度标签与它重叠。代码是:

ax[0].plot((zspace+1.),dndt_vs_z_9, color='blue', label=r'$M_s = 10^9$')
ax[0].plot((zspace+1.),dndt_vs_z_10, color='red', label=r'$M_s = 10^{10}$')
ax[0].plot((zspace[zspace<=2]+1.),dndt_vs_z_11[zspace<=2], color='green', label=r'$M_s = 10^{11}$')
ax[0].plot((zspace[zspace<=2]+1.),(1./2.)*dndt_vs_z_11[zspace<=2], color='black')
ax[0].plot((zspace[zspace<=2]+1.),0.65*dndt_vs_z_11[zspace<=2], color='black')
ax[0].plot(gomez_11_x,gomez_11_y,color='blue', linestyle='dashed')
ax[0].plot(gomez_10_x,gomez_10_y,color='red', linestyle='dashed')
ax[0].plot(gomez_9_x,gomez_9_y,color='green', linestyle='dashed')
#ax[0].scatter(ill_shmr_z,ill_shmr_dndw_model_11)

ax[0].set_yscale('log')
ax[0].set_xscale('log')

ax[0].set_xticks([1,2,3,4,5], minor=True)
ax[0].set_xticklabels([1,2,3,4,5], minor=True, fontsize='20')
ax[0].set_xlim([1,5])
ax[0].set_ylim([1e-2,1e1])
ax[0].legend(loc='best', fontsize='20')

ax[0].grid(b = True, which='major')
ax[0].grid(b = True, which='minor', axis='x')
ax[0].set_xlabel(r'$1+z$', fontsize='15')
ax[0].set_ylabel(r'$\frac{dN}{dt}$', fontsize='20')

结果是:

Result

最佳答案

这里的问题来自于使用对数刻度时混合主要和次要刻度。您的示例案例中的解决方案是使用 NullLocator 删除主要刻度。并且只使用小刻度:

一个小例子是:

import matplotlib.pyplot as plt
import matplotlib.ticker

fig, (ax1, ax2) = plt.subplots(1,2, figsize=(12,7))

ax1.loglog([1,2,3,4,5])
ax1.set_xticks([1,2,3,4,5],minor=True)
ax1.set_xticklabels([1,2,3,4,5], minor=True, fontsize='20')
ax1.set_title("Reproduce problem")

ax2.loglog([1,2,3,4,5])
ax2.set_xticks([1,2,3,4,5],minor=True)
ax2.set_xticklabels([1,2,3,4,5], minor=True, fontsize='20')
ax2.xaxis.set_major_locator(matplotlib.ticker.NullLocator())
ax2.set_title("Apply fix")

plt.show()

enter image description here

关于python - 设置 xticklabel 与旧 xtick 重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49510457/

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