所以我是一个相当新的python程序员,并且一直坚持这个小问题的方式比我应该的更长。 I have this plot正如您所看到的,只有选择值显示为科学记数法。
我希望所有的值都以科学记数法出现(即1e1,1e2 ......等等)这是我尝试过的尝试之一(很多):
fig2 = plt.figure(2)
ax = plt.gca()
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
plt.xlabel('gamma')
plt.ylabel('C')
plt.imshow(scores, interpolation='nearest', cmap=plt.cm.hot,
norm=MidpointNormalize(vmin=0.2, midpoint=0.7))
plt.colorbar()
ax.set_yticks(range(len(C_range)))
ax.set_yticklabels(C_range)
ax.set_xticks(range(len(gamma_range)))
ax.set_xticklabels((gamma_range), rotation=45)
plt.title('Validation accuracy')
plt.tight_layout()
fig2.show()
上面代码中的第3行似乎没有做任何事情,所以我想我可以在“set_xticks”部分后移动它,因为我假设这些行覆盖了ticklabel_format命令。以下累了:
fig2 = plt.figure(2)
ax = plt.gca()
plt.xlabel('gamma')
plt.ylabel('C')
plt.imshow(scores, interpolation='nearest', cmap=plt.cm.hot,
norm=MidpointNormalize(vmin=0.2, midpoint=0.7))
plt.colorbar()
ax.set_yticks(range(len(C_range)))
ax.set_yticklabels(C_range)
ax.set_xticks(range(len(gamma_range)))
ax.set_xticklabels((gamma_range), rotation=45)
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
plt.title('Validation accuracy')
plt.tight_layout()
fig2.show()
结果是:
AttributeError:此方法仅适用于ScalarFormatter。
我已经阅读了很多关于如何做这样的事情的例子,但是每当我按照已经完成的工作时,要么没有任何反应,要么我得到同样的错误。
有人可以解释一下究竟发生了什么吗? ax.set_yticks会改变格式化程序吗?我没有明确选择格式化程序,这是我需要做的事情吗?我怎样才能强制推出我想要的东西?
先谢谢了! 如果这有点乱,我很抱歉,这可能是我在这里问过的第二个问题。请告诉我是否应该改变一些事情。
答案 0 :(得分:0)
所以我找到了一个可以满足我需求的工作,尽管xticks / yticks覆盖格式化器的原因已经超出了我的范围。如果有人想为我清理一下,我很满意,因为我对它的运作方式很感兴趣。
我只是将我的C_range和gamma_range数组更改为字符串列表并将它们传递给xticks / yticks
fmt_C = ['%.0e' % i for i in C_range.tolist()]
fmt_gamma = ['%.0e' % i for i in gamma_range.tolist()]
plt.xticks(np.arange(len(gamma_range)), fmt_gamma, rotation=45)
plt.yticks(np.arange(len(C_range)), fmt_C)