matplotlib 即使将xticklabels设置为null,它们也不会消失

tkclm6bt  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(109)

我尝试在对数标度上绘制从0.01到0.1的曲线。我使用以下代码:

fig = plt.figure   ( figsize=(4/1.6,3/1.6), constrained_layout=True )
    ax  = plt.axes()`
    plt.rcParams["axes.labelweight"] = "bold"
    ax.tick_params(direction='in', bottom=True, top=True, left=True, right=True, which='both')
    ax.tick_params(axis='x', labelsize=8)
    ax.tick_params(axis='y', labelsize=8)
    ax.plot (x_data, y_data)
    ax.minorticks_off()
    ax.set_xscale('log')
    yticks = np.arange(0.985, 1.005, 0.005)
    ax.set_yticks ( yticks )
    ax.set_yticklabels (ax.get_yticks(), weight='bold')`
    ax.set_ylim   ( 0.985, 1.0 )
    ax.set_xlim   ( 0.01, 0.1 )
    ax.yaxis.set_minor_locator(tck.AutoMinorLocator())
    ax.yaxis.set_major_formatter(StrMethodFormatter('{x:1.3f}') )
    ax.xaxis.set_major_formatter(StrMethodFormatter('{x:1.2f}') )
    ax.set_aspect ('auto')

当我这样做的时候,我仍然得到x轴上的minortick的标签。这是我看到的:

我的问题是,为什么我在xtick标签上看到所有这些无关的东西?我已经尝试在最顶部旋转ax.set_xticklabels([])并手动插入标签,但它仍然不起作用。我在这里做错了什么?

  • 我想要的输出是xticklabels为粗体,并且是“0.01,0.025,0.05,0.075,0.1”。*
brccelvz

brccelvz1#

一种方法,只是保持你想要的滴答声将使用ax.set_ticks()ax.set_ticklabels()到你想要的,然后关闭次要滴答声。我已经更新了你的代码如下。请注意,我添加了一些旋转,水平对齐的xticks和增加小数位从2到3的xticks。希望这是你正在寻找...

fig = plt.figure(figsize=(4/1.6,3/1.6), constrained_layout=True )
ax  = plt.axes()
plt.rcParams["axes.labelweight"] = "bold"
ax.tick_params(direction='in', bottom=True, top=True, left=True, right=True, which='both')
ax.tick_params(axis='x', labelsize=8)
ax.tick_params(axis='y', labelsize=8)
y_data=[1,0.999,0.997,0.993,0.985]
x_data=[0.01, 0.02,0.05,0.09,0.1]
ax.plot (x_data, y_data)
ax.set_xscale('log')
yticks = np.arange(0.985, 1.005, 0.005)
ax.set_yticks ( yticks )
ax.set_yticklabels (ax.get_yticks(), weight='bold')
ax.set_ylim   ( 0.985, 1.0 )
ax.set_xlim   ( 0.01, 0.1 )

## New code here
ax.set_xticks([0.01, 0.025, 0.05, 0.075, 0.1])
ax.set_xticklabels([0.01, 0.025, 0.05, 0.075, 0.1], weight = 'bold', rotation = 45, ha="right")
ax.minorticks_off()

import matplotlib.ticker as tck
ax.yaxis.set_minor_locator(tck.AutoMinorLocator())
ax.yaxis.set_major_formatter(tck.StrMethodFormatter('{x:1.3f}') )
ax.xaxis.set_major_formatter(tck.StrMethodFormatter('{x:1.3f}') )
ax.set_aspect ('auto')

输出图

相关问题