Python Pyplot:未显示光标的位置
当我在pyplot中创建子图时,光标的位置没有正确显示,如下图所示(光标位于右上方子图的某个位置(与所有其他子图的行为相同),但当我制作屏幕截图时,光标不在那里(我使用Win10)):Python Pyplot:未显示光标的位置,python,matplotlib,Python,Matplotlib,当我在pyplot中创建子图时,光标的位置没有正确显示,如下图所示(光标位于右上方子图的某个位置(与所有其他子图的行为相同),但当我制作屏幕截图时,光标不在那里(我使用Win10)): []之间的值是正确的颜色值,但未显示x和y值。只有在使用子批时才会发生这种情况。 下面是生成该图片的代码: def plot_subplots(lam, t): # lam: list of 4 lambda values, t fixed f, ax = plt.subplots(2, 2, s
[]
之间的值是正确的颜色值,但未显示x
和y
值。只有在使用子批时才会发生这种情况。下面是生成该图片的代码:
def plot_subplots(lam, t):
# lam: list of 4 lambda values, t fixed
f, ax = plt.subplots(2, 2, sharex='col', sharey='row')
((ax1, ax2), (ax3, ax4)) = ax
ax = [ax1, ax2, ax3, ax4]
# get X and K (both equidistant arrays)
for k, l in enumerate(lam):
# get the color array husimi
p = ax[k].pcolorfast(X, K, husimi, cmap='jet')
ax[k].set_title(r'$\lambda='+str(l)+'$')
ax1.set_ylabel(r'$k$')
ax3.set_ylabel(r'$k$')
ax1.set_yticks([min(K), 0, max(K)])
ax1.set_yticklabels([r'$-\pi$', r'$0$', r'$\pi$'])
ax3.set_yticks([min(K), 0, max(K)])
ax3.set_yticklabels([r'$-\pi$', r'$0$', r'$\pi$'])
ax3.set_xlabel(r'$x$')
ax4.set_xlabel(r'$x$')
ax3.set_xticks([min(X), 0, max(X)])
ax4.set_xticks([min(X), 0, max(X)])
ax3.set_xticklabels([r'$'+str(min(X))+'$', r'$0$', r'$'+str(max(X))+'$'])
ax4.set_xticklabels([r'$'+str(min(X))+'$', r'$0$', r'$'+str(max(X))+'$'])
f.suptitle(r'$t_2='+str(t)+'$')
如果有必要的话,我将使用Python 3.4.3 64位和Matplotlib 1.5.2。是否有人在代码中发现了导致这种行为的错误,或者这只是
plt.pcolorfast
的一些错误?这与子批无关。这也不是pcolorfast
中的错误
没有显示数字的原因是您手动设置了Xticklabel。使用ax.setxticklabels
覆盖轴的格式化程序并创建固定的格式化程序。如果您正在设置ax,问题可能会变得很明显。请设置“[“苹果”、“香蕉”、“樱桃”);苹果和香蕉之间你会有什么价值
因此,我们的想法当然是不使用setxticklabels
,因此不使用固定的格式化程序。相反,我们可以使用FuncFormatter
函数,该函数为每个可能的输入返回一个值,并且只确保例如np.pi
被格式化为π
import matplotlib.pyplot as plt
import matplotlib.ticker
import numpy as np; np.random.seed(1)
x = np.linspace(-np.pi,np.pi)
X,Y = np.meshgrid(x,x)
Z = np.random.normal(size=np.array(X.shape)-1)
fig, ax = plt.subplots()
pc = ax.pcolorfast(X,Y,Z)
ax.set_yticks([-np.pi, 0, np.pi])
def fmt(x,pos):
if np.isclose([np.abs(x)],[np.pi]):
if x>0: return r'$\pi$'
else: return r'$-\pi$'
else:
return "%g" % x
ax.yaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(fmt))
fig.colorbar(pc, ax=fig.axes)
plt.show()
谢谢!很高兴知道我在用这种简单的方式设置标签时破坏了一些东西。