在二维数组的matplotlib colorbar图上修改轴

2024-09-29 18:53:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

下面是当前我的色条图的一个示例: Example of Colorbar plot

下面是代码:

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()

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


Tags: 数据numpydata颜色npfig绘制plt
2条回答

我知道的唯一改变图像绘图轴标签的方法是手动标记。。。如果有人有一个更干净的方法,我想学习它。

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)]) 

我想,你应该看看imshow选项“origin”和“extent”。

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')

extent and origin

相关问题 更多 >

    热门问题