设置自定义 imshow 刻度以显示为科学记数法
Posted
技术标签:
【中文标题】设置自定义 imshow 刻度以显示为科学记数法【英文标题】:Setting custom imshow ticks to appear as scientific notation 【发布时间】:2015-11-12 23:44:40 【问题描述】:所以我是一个相当新的 Python 程序员,并且在这个小问题上停留的时间比我应该的要长得多。我有这个情节:
如您所见,只有选定的值显示为科学记数法。
我希望所有值都以科学记数法出现(即 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
会更改格式化程序吗?我没有明确选择格式化程序,这是我需要做的吗?我怎样才能强制输出我正在寻找的东西?
【问题讨论】:
【参考方案1】:所以我找到了解决我需要的方法,尽管 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)
【讨论】:
以上是关于设置自定义 imshow 刻度以显示为科学记数法的主要内容,如果未能解决你的问题,请参考以下文章
python使用matplotlib可视化自定义设置坐标轴的范围自定义设置主坐标轴刻度和次坐标轴刻度自定义坐标轴刻度的显示样式自定义坐标轴刻度数值的颜色以及小数点位数添加坐标轴刻度网格线
python可视化自定义设置坐标轴的范围自定义设置主坐标轴刻度和次坐标轴刻度自定义坐标轴刻度的显示样式自定义坐标轴刻度数值的颜色以及小数点位数添加坐标轴刻度网格线自定义移动坐标轴的位置
Python / Matplotlib:带有contourf的颜色条不尊重自定义cmap的刻度标签
matplotlib自定义设置plt.colorbar函数配置颜色条的刻度数实战:自定义设置颜色条刻度并为刻度值进行命名和标签化