【问题标题】:Matplotlib Colorbar scientific notation offsetMatplotlib Colorbar 科学计数法偏移
【发布时间】:2015-12-02 09:41:51
【问题描述】:

在绘制颜色条时,顶部标签(我猜这将被称为偏移量)是错误居中的。这不会发生,我有旧代码的示例,它位于颜色栏上方,但我不知道发生了什么变化。

例子:

import numpy as np
import matplotlib.pyplot as plt

z = np.random.random((10,10))

fig, ax = plt.subplots()
im = ax.imshow(z)
cb = fig.colorbar(im)

cb.formatter.set_powerlimits((0, 0))
cb.update_ticks()

plt.show()

给出这个:

作为它过去外观的示例(取自我的一篇旧论文,所以 不同的数据等)

使用最新的 anaconda python 2.7,在 MacOSX 上,mpl 版本 1.5.0

编辑:我还应该注意,tight_layout() 也没有改善这一点,尽管工作示例中缺少它。

【问题讨论】:

  • 更直接的比较在this SO answer
  • 我想这个数字是jet 不应该作为颜色图被删除的一个原因,它仍然有它的用途:我可以无休止地盯着它,慢慢地飘入某种形式的超空间。

标签: python matplotlib colorbar


【解决方案1】:

您可以简单地使用set_offset_position 作为颜色条的 y 轴。比较:

fig, ax = plt.subplots()                
im = ax.imshow(np.random.random((10,10)))                    
cb = fig.colorbar(im)     
cb.formatter.set_powerlimits((0, 0))
cb.ax.yaxis.set_offset_position('right')                         
cb.update_ticks()
plt.show()

fig, ax = plt.subplots()
im = ax.imshow(np.random.random((10,10)))
cb = fig.colorbar(im)
cb.formatter.set_powerlimits((0, 0))
cb.ax.yaxis.set_offset_position('left')
cb.update_ticks()
plt.show()

总而言之,看起来默认值已经从右到左更改了。

【讨论】:

  • 太好了,我会用这个作为答案,因为它不需要降级。非常感谢!虽然对左/右感到困惑,但您必须使用左将标签更向右移动!奇怪!
  • @ajclarke 我认为left 表示将标签的左侧与颜色条的左侧对齐,而right 表示将标签的右侧与颜色条的右侧对齐跨度>
  • 是的,这似乎是汤姆提到的。不幸的是,这是 matplotlib 中仍然缺少 documentation 的部分之一。幸运的是,mpl 有大量的示例通常可以更好地用作文档。
【解决方案2】:

使用上面的代码和 matplotlib 1.4.3 版,我得到以下图

所以这可能是版本问题。一种可能的解决方法是使用cb.ax.text()

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

z = np.random.random((10,10))

fig, ax = plt.subplots()
im = ax.imshow(z)
cb = fig.colorbar(im)
cb.ax.text(-0.25, 1, r'$\times$10$^{-1}$', va='bottom', ha='left')

plt.show()

这样您可以更好地控制居中。上面的代码给了我下面的情节 请注意,我在字符串的开头使用了r,以便$\times$ 生成正确的符号。

【讨论】:

  • 可以确认,降级到 1.4.3 可以解决这个问题。我可以忍受使用那个版本。我唯一不明白的是为什么您的示例中的颜色条没有与 plt.colorbar 本身的偏移量。当我这样做时,cb.ax.text 只是扑通一声放在颜色栏的默认偏移标签的顶部
  • 我认为那是因为我删除了以下几行:cb.formatter.set_powerlimits((0, 0))cb.update_ticks()
猜你喜欢
  • 2017-09-05
  • 2011-06-26
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
  • 2015-08-29
  • 1970-01-01
相关资源
最近更新 更多