【问题标题】:Modifying axes on matplotlib colorbar plot of 2D array修改二维数组的 matplotlib 颜色条图上的轴
【发布时间】:2011-09-10 03:42:29
【问题描述】:

我有一个 2D numpy 数组,我想在颜色栏中绘制它。我无法更改轴以便它们显示我的数据集。垂直轴从 0 到 100 “向下”,而我希望它从 0.0 到 0.1 “向上”。所以我需要做两件事:

  • 使用 np.flipud() 翻转数组,然后也“翻转”轴
  • 将标签从 0.0 更改为 0.1,而不是 0 到 100

这是我的颜色条图当前的示例:

这里是代码:

data = np.load('scorr.npy')
(x,y) = np.unravel_index(data.argmax(), data.shape)
max=data[x][y]

fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.imshow(data, interpolation='nearest')
cbar = fig.colorbar(cax, ticks=[-max, 0, max])
cbar.ax.set_yticklabels([str(-max), '0', str(max)])
plt.show()

有人有什么建议吗?提前致谢!

【问题讨论】:

    标签: python numpy matplotlib colorbar


    【解决方案1】:

    我知道更改图像图上的轴标签的唯一方法是手动标记...如果有人有更简洁的方法,我很乐意学习。

    ax.yaxis.set_ticks(np.arange(0,100,10))
    ax.yaxis.set_ticklabels(['%.2f' % 0.1/100*i for i in np.arange(0,100,10)]) 
    

    【讨论】:

      【解决方案2】:

      你想看看 imshow 选项“原点”和“范围”,我想。

      import matplotlib.pyplot as plt
      import numpy as np
      
      x,y = np.mgrid[-2:2:0.1, -2:2:0.1]
      data = np.sin(x)*(y+1.05**(x*np.floor(y))) + 1/(abs(x-y)+0.01)*0.03
      
      fig = plt.figure()
      ax = fig.add_subplot(111)
      ticks_at = [-abs(data).max(), 0, abs(data).max()]
      cax = ax.imshow(data, interpolation='nearest', 
                      origin='lower', extent=[0.0, 0.1, 0.0, 0.1],
                      vmin=ticks_at[0], vmax=ticks_at[-1])
      cbar = fig.colorbar(cax,ticks=ticks_at,format='%1.2g')
      fig.savefig('out.png')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-07
        相关资源
        最近更新 更多