我目前正在对两个子图中的一些数据进行可视化。这两个子图包含相同的x和y轴,并且都使用相同的方面。我目前可以选择是否将它们显示在彼此旁边或彼此之上,但我希望它根据图的形状自动执行此操作。Flat plot, in subplot(2 by 2) layout but needs to show 2 by 1 favourablyHigh plot, in subplot (2 by 2) layout should be 1 by 2 favourably
图片中的图像只是通过放大特定形状的图来改变。
两个子图的形状总是相同的。
我目前正在使用这段代码来塑造情节,
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
pcd=np.random.rand(1000,2)*40
mdfig=plt.figure()
ax=mdfig.add_subplot(224)
ax.set_aspect('equal',adjustable='box')
ax.set_title("fine tuned")
axs=mdfig.add_subplot(221,sharex=ax,sharey=ax)
axs.set_aspect('equal',adjustable='box')
axs.set_title("original")
# ax.set_zlim([-1,10])
def on_change(val):
ax.cla()
axs.cla()
ax.set_title("fine tuned")
ax.axis('scaled')
axs.set_title("original")
axs.axis('scaled')
ax.scatter(pcd[:,0],pcd[:,1],s=5,c='black',label="pointcloud",alpha=freq_slider.val)
axs.scatter(pcd[:,0],pcd[:,1],s=5,c='black',label="pointcloud",alpha=freq_slider.val)
axfreq = mdfig.add_axes([0.25, 0.1, 0.65, 0.03])
freq_slider = Slider(
ax=axfreq,
label='transparency pointcloud',
valmin=0,
valmax=1,
valinit=0,
valstep=0.01
)
freq_slider.on_changed(on_change)
plt.show()
字符串
1条答案
按热度按时间yfwxisqw1#
您可以使用gridspec来更改子图的位置。Here是您任务的其他解决方案。
我调用
ax.get_xlim
和ax.get_ylim
来计算轴的范围。如果x跨度较大,则轴会更长,因为长宽比相等,它会将图设置为一列,否则图将设置为一行。以下是如何更改
on_change
方法。x范围是根据提供的值计算的,用于测试目的。字符串