python画布的默认原点_在Python中更改绘图的原点

在Python中,使用matplotlib进行2D绘图时,遇到如何更改Y轴数据顺序的问题。通过设置imshow的`extent`参数未能达到预期效果。解决方法是使用`origin`关键字,将其设置为'lower',或者使用`np.flipud`翻转数组轴。这样可以在图像原点显示期望的数据点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个包含3列的数据表,我想在彩色2D绘图中根据前两个绘制第三列.例如,对于下表,即

4.0 4.0 0.313660827978

4.0 5.0 0.365348418405

4.0 6.0 0.423733120134

5.0 4.0 0.365348418405

5.0 5.0 0.439599930621

5.0 6.0 0.525083754405

6.0 4.0 0.423733120134

6.0 5.0 0.525083754405

6.0 6.0 0.651536351379

我使用以下代码:

x,y,z = np.loadtxt('output_overlap.dat').T #Transposed for easier unpacking

nrows, ncols = final_step_j-1, final_step_k-1

grid = z.reshape((nrows, ncols))

plt.imshow(grid, extent=(x.min(), x.max(), y.max(), y.min()),

interpolation='nearest',

cmap='binary')

fig1 = plt.gcf()

plt.colorbar()

plt.xlabel('m1')

plt.ylabel('m2')

plt.draw()

fig1.savefig('test.pdf', dpi=100)

close('all')

这给了我以下情节:

https://dl.dropboxusercontent.com/u/31460244/test.png

哪个是对的.现在,我的问题是:如何更改在Y轴上显示数据的顺序?我想在原点得到点(4,4).

我试过改变

plt.imshow(grid, extent=(x.min(), x.max(), y.max(), y.min())

至:

plt.imshow(grid, extent=(x.min(), x.max(), y.min(), y.max())

它确实会更改网格中的数字,但不会更改实际数据.这不是解决方案.有人可以帮我吗?

范围只是将这些角坐标分配给数据,它无论如何都不会改变基础数据的顺序.

imshow有一个origin关键字,请参阅:

a = np.array([0.313660827978, 0.365348418405, 0.423733120134,

0.365348418405, 0.439599930621, 0.525083754405,

0.423733120134, 0.525083754405, 0.651536351379]).reshape(3,3)

extent = [4,6,4,6]

fig, axs = plt.subplots(1,2)

axs[0].imshow(a, extent=extent, interpolation='none')

axs[1].imshow(a, origin='lower', extent=extent, interpolation='none')

您还可以考虑使用np.flipud和np.fliplr来镜像数组的轴.但我个人更喜欢用imshow设置原点,如果这足够的话.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值