如何在 y 轴上手动或自动添加缺失的 y 标签,该标签与其他规则间隔不一致
How to add manually or automatically a missing y-label on y-axis which is not uniform towards other regular intervals
我有下图:
我是通过以下 Python 脚本制作的:
# Colormap plot
im = ax.imshow(np.log10(np.abs(matrixCl_der_transposed)), extent = [1e-8, 1e-1, 10, 5000], origin='lower',\
aspect = 'auto', interpolation = 'none', cmap = 'viridis')
# Increase space between x-axis and x-label
ax.tick_params(axis = 'x', which = 'major', pad = 15)
# Add lower multipole l = 10
y_label_list = ['10', '1000', '2000', '3000', '4000', '5000']
ax.set_yticks = [10, 1000, 2000, 3000, 4000, 5000]
ax.set_yticklabels(y_label_list)
# Log scal for step
plt.xscale('log')
# Title
plt.title('$\log_{10}|(C_{l}\')|$ of '+paramLatexArray[idParam]+' at $z$ = '+\
str(zrange[idRedshift]), fontsize = 24, pad = 25)
# Lebels on axis
plt.xlabel('step', fontsize = 20)
plt.ylabel('$l$ multipole', fontsize = 20)
plt.xticks(fontsize = 20)
plt.yticks(fontsize = 20)
plt.grid()
# Color bar
clb = plt.colorbar(im)
clb.ax.set_title('$\log_{10}|(C_{l}\')|$', fontsize = 20, pad = 12)
clb.ax.tick_params(labelsize = 16)
tick_locator = ticker.MaxNLocator(nbins=15)
clb.locator = tick_locator
clb.update_ticks()
如您所见,我试图通过执行以下操作明确添加 y 轴的较低值(原点等于 10
):
# Add lower multipole l = 10
y_label_list = ['10', '1000', '2000', '3000', '4000', '5000']
ax.set_yticks = [10, 1000, 2000, 3000, 4000, 5000]
ax.set_yticklabels(y_label_list)
但不幸的是,这个较低的值没有出现在图的左下角。显示值 1000
、2000
、3000
、4000
和 5000
,但不显示 10
值。
imshow
的 extent = [1e-8, 1e-1, 10, 5000]
选项是否导致此问题?
如何自动添加这个较低的值?
就像@ImportanceOfBeingErnest 评论的那样,set_yticks
是一个函数,而不是 属性。您应该调用它并将标签列表传递给它,如下所示:
y_label_list = ['10', '1000', '2000', '3000', '4000', '5000']
ax.set_yticks(y_label_list)
如评论所述,您通过向它分配一个列表而不是调用它来销毁 set_yticks
方法。还要注意刻度位置不应该是字符串。
y_label_list = [10, 1000, 2000, 3000, 4000, 5000]
ax.set_yticks(y_label_list)
ax.set_yticklabels(y_label_list)
我有下图:
我是通过以下 Python 脚本制作的:
# Colormap plot
im = ax.imshow(np.log10(np.abs(matrixCl_der_transposed)), extent = [1e-8, 1e-1, 10, 5000], origin='lower',\
aspect = 'auto', interpolation = 'none', cmap = 'viridis')
# Increase space between x-axis and x-label
ax.tick_params(axis = 'x', which = 'major', pad = 15)
# Add lower multipole l = 10
y_label_list = ['10', '1000', '2000', '3000', '4000', '5000']
ax.set_yticks = [10, 1000, 2000, 3000, 4000, 5000]
ax.set_yticklabels(y_label_list)
# Log scal for step
plt.xscale('log')
# Title
plt.title('$\log_{10}|(C_{l}\')|$ of '+paramLatexArray[idParam]+' at $z$ = '+\
str(zrange[idRedshift]), fontsize = 24, pad = 25)
# Lebels on axis
plt.xlabel('step', fontsize = 20)
plt.ylabel('$l$ multipole', fontsize = 20)
plt.xticks(fontsize = 20)
plt.yticks(fontsize = 20)
plt.grid()
# Color bar
clb = plt.colorbar(im)
clb.ax.set_title('$\log_{10}|(C_{l}\')|$', fontsize = 20, pad = 12)
clb.ax.tick_params(labelsize = 16)
tick_locator = ticker.MaxNLocator(nbins=15)
clb.locator = tick_locator
clb.update_ticks()
如您所见,我试图通过执行以下操作明确添加 y 轴的较低值(原点等于 10
):
# Add lower multipole l = 10
y_label_list = ['10', '1000', '2000', '3000', '4000', '5000']
ax.set_yticks = [10, 1000, 2000, 3000, 4000, 5000]
ax.set_yticklabels(y_label_list)
但不幸的是,这个较低的值没有出现在图的左下角。显示值 1000
、2000
、3000
、4000
和 5000
,但不显示 10
值。
imshow
的 extent = [1e-8, 1e-1, 10, 5000]
选项是否导致此问题?
如何自动添加这个较低的值?
就像@ImportanceOfBeingErnest 评论的那样,set_yticks
是一个函数,而不是 属性。您应该调用它并将标签列表传递给它,如下所示:
y_label_list = ['10', '1000', '2000', '3000', '4000', '5000']
ax.set_yticks(y_label_list)
如评论所述,您通过向它分配一个列表而不是调用它来销毁 set_yticks
方法。还要注意刻度位置不应该是字符串。
y_label_list = [10, 1000, 2000, 3000, 4000, 5000]
ax.set_yticks(y_label_list)
ax.set_yticklabels(y_label_list)