涉及 matplotlib 设置轴位置(以像素为单位)的 Matlab 代码端口
Port Matlab code involving matplotlib setting axes position in pixels
我需要将此代码从 matlab 移植到 python:
fig;
stringNumber = '0.1'
set(gca,'units','pixels','position',[1 1 145 55],'visible','on')
box('on')
以上代码结果如下图matlabTest1(屏幕最大化)。
请注意,如果调整图形大小,轴不会缩放,请参阅 matlabTest2
我尝试将其移植到 python 中,将位置和偏移量从 transFigure 转换为 Display / Pixel。
这是我的代码:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca()
inv = fig.transFigure.inverted()
offset = inv.transform((1, 1))
position = inv.transform((145, 55))
ax.set_position([offset[0], offset[1], position[0],position[1]])
plt.show()
我的代码生成 pythonTest1(屏幕最大化)。框大小看起来与 matlabTest1.
不同
此外,如果我调整图形大小,框的大小也会发生变化,请参见pythonTest2
如何获得与matlab代码完全相同的结果?
感谢任何可以提供帮助的人。
默认情况下,Matplotlib 图形在图形坐标中定位。因此,没有直接等效于提供的 matlab 代码。
以像素为单位指定轴位置的一种方法是使用 mpl_toolkits.axes_grid1.inset_locator
中的 AnchoredSizeLocator
。
import matplotlib.transforms as mtrans
import mpl_toolkits.axes_grid1.inset_locator as ins
import matplotlib.pyplot as plt
axes_locator = ins.AnchoredSizeLocator([1, 1, 145, 55],
"100%", "100%",
loc="center",
bbox_transform=mtrans.IdentityTransform(),
borderpad=0)
fig, ax = plt.subplots()
ax.set_axes_locator(axes_locator)
plt.show()
我需要将此代码从 matlab 移植到 python:
fig;
stringNumber = '0.1'
set(gca,'units','pixels','position',[1 1 145 55],'visible','on')
box('on')
以上代码结果如下图matlabTest1(屏幕最大化)。
请注意,如果调整图形大小,轴不会缩放,请参阅 matlabTest2
我尝试将其移植到 python 中,将位置和偏移量从 transFigure 转换为 Display / Pixel。
这是我的代码:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca()
inv = fig.transFigure.inverted()
offset = inv.transform((1, 1))
position = inv.transform((145, 55))
ax.set_position([offset[0], offset[1], position[0],position[1]])
plt.show()
我的代码生成 pythonTest1(屏幕最大化)。框大小看起来与 matlabTest1.
不同此外,如果我调整图形大小,框的大小也会发生变化,请参见pythonTest2
如何获得与matlab代码完全相同的结果?
感谢任何可以提供帮助的人。
默认情况下,Matplotlib 图形在图形坐标中定位。因此,没有直接等效于提供的 matlab 代码。
以像素为单位指定轴位置的一种方法是使用 mpl_toolkits.axes_grid1.inset_locator
中的 AnchoredSizeLocator
。
import matplotlib.transforms as mtrans
import mpl_toolkits.axes_grid1.inset_locator as ins
import matplotlib.pyplot as plt
axes_locator = ins.AnchoredSizeLocator([1, 1, 145, 55],
"100%", "100%",
loc="center",
bbox_transform=mtrans.IdentityTransform(),
borderpad=0)
fig, ax = plt.subplots()
ax.set_axes_locator(axes_locator)
plt.show()